2010-11-06 1 views
1

Я работаю над программой, которая вроде как секундомер, которая уведомляет пользователя о разных вещах. Они должны иметь возможность использовать другие приложения в ожидании уведомления. Уведомление будет текстовым. Если экран пользовательского интерфейса открыт, ему необходимо посмотреть, сколько времени осталось, и иметь возможность приостанавливать таймер.Приложение для остановки просмотра, используя сервис и BroadcastReceiver

Я думаю об использовании службы для таймера и уведомления. Служба обновит пользовательский интерфейс с помощью намерений и BroadcastReceiver. Это означает, что мне придется отправлять трансляцию каждую секунду на время.

Есть ли лучший способ сделать это?

ответ

4

Есть ли лучший способ сделать это?

Вторая секунда - вторая. Время не течет быстрее в одном компоненте приложения, чем другое. Следовательно, вам не нужно «отправлять трансляцию каждую секунду за время».

Кроме того, сохранение службы в памяти, которая ничего не делает, кроме отсчета времени, является пустой тратой процессора и оперативной памяти, что вызывает у пользователей проблемы с дефолтом у разработчиков Android, когда они достигают своего любимого убийцы задачи.

Используйте AlarmManager до send an ordered broadcast, когда обратный отсчет планируется завершить, чтобы обработать ваш Notification (и, необязательно, что-то делать непосредственно в вашей деятельности). Также сохраняйте время окончания обратного отсчета в постоянном хранилище (база данных, плоский файл и т. Д.), И эта деятельность может использовать это, когда она возвращается на экран, чтобы забрать обратный отсчет. Если пользователь приостановит обратный отсчет, отмените выдающийся аварийный сигнал. Если пользователь устанавливает/снова включает обратный отсчет, установите будильник.

+0

спасибо, это то, что мне нужно. – bryan

+0

Большое спасибо за объяснение и за ссылку на сообщение в блоге. Там упоминается, что пример кода, который демонстрирует эту концепцию, может быть опубликован в вашем репозитории GitHub в какой-то момент. (Возможно, группа Google Group больше не активна.) Интересно, где (и если) я могу получить образец кода, чтобы лучше понять, как все это подходит друг другу. – aLearner

+0

@aLearner: Здесь вы найдете: https://github.com/commonsguy/cw-omnibus/tree/master/Notifications/Ordered – CommonsWare

Смежные вопросы