Служба CountDownTimer - PullRequest
       5

Служба CountDownTimer

1 голос
/ 30 марта 2012

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

1 Ответ

1 голос
/ 30 марта 2012

Э-э, не все службы работают 100% времени. Ничего - это разряд батареи, если он не работает на 100%.Если вы посмотрите на фактическое потребление батареи устройством Android, вы увидите, что наибольший процент приходится на экран.Следующее идет от радио.Запуск процесса стоит очень мало.

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

Чтобы запустить службу, отправьте намерение «запуск» в IntentService с помощью startService (намерение).Это должно вызвать метод, который создает намерение с действием «цикл», помещает намерение в PendingIntent и планирует повторяющуюся тревогу с AlarmManager.setRepeating ().

После интервала, установленного для тревоги,AlarmManager заберет «циклическое» намерение из PendingIntent и отправит его обратно в ваш сервис.Ваша служба должна обрабатывать «цикл», перестраивая PendingIntent и перезапуская сигнал тревоги.Это продолжается до бесконечности.Вы можете добавить все, что захотите, когда сработает сигнализация, для действия «цикл».

Если вы хотите, чтобы аварийный сигнал прекратился, отправьте намерение «остановить».В ответ ваша служба должна отменить сигнал тревоги, восстановив PendingIntent и затем вызвав AlarmManager.cancel ().

Примечания. Основной точкой входа для IntentService является onHandleIntent ().Вы называете все остальное оттуда.Когда этот метод завершается, служба перестает работать, пока не получит другое намерение.Единственное место, где вы можете «увидеть» это в кэшированных процессах.Как только вы отключите сигнализацию, система со временем обнаружит, что служба не используется, и соберет мусор.

Службы - это способ выполнения фоновой работы.Я предполагаю, что вы можете запустить какой-нибудь AsyncTask или поток, но вы все равно хотите запустить их в Сервисе, иначе вы связали их с чем-то, что работает на переднем плане.Если заданию не нужно взаимодействовать с пользователем, особенно если оно может работать асинхронно с вашей деятельностью, используйте службу.

...