2013-06-04 4 views
0

Я использую таймер в своем приложении для повторной задачи. По умолчанию timer должен повторять задачу с задержкой в ​​одну секунду. Я запускаю таймер при запуске приложения. Все это прекрасно работает. Кроме того, когда я вышел из своего приложения и открыл какое-то другое приложение, таймер продолжает работать.Таймер останавливается в фоновом режиме: Android

Когда я открываю приложение Google Maps, мой таймер перестает работать. Я не знаю, почему это происходит. Я googled и нашел из жизненного цикла деятельности, что, если другие приложения нуждаются в памяти, все процессы будут убиты. Это то, что происходит в моем случае, я думаю.

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

  1. Почему возникла эта проблема?
  2. Как достичь моего требования?
  3. Помогает ли services решить проблему? Если да, есть ли способ сохранить timer всегда включен без использования services?
  4. Помогает ли диспетчер аварийных сигналов? Даже если пользователь перезапустит телефон, таймер должен работать правильно.

ответ

0

Да, служба решит вашу проблему. Настойчивость деятельности регулируется его жизненным циклом, поэтому, в конце концов, вы не контролируете его выполнение. Служба является постоянной, поскольку она не будет отключена системой. Однако если вы делаете большой расчет, будьте предупреждены о том, что ОС не будет столь же щедрым с распределением ресурсов, как это происходит с экранной деятельностью.

Вкратце:
1) Хорошо, из предоставленной вами информации, я полагаю, вы сделали правильные выводы.
2) Через сервис.
3) Да, это решит вашу проблему, нет, я не думаю, что есть другой способ сделать это, по крайней мере, не изнутри деятельности.
4) Если вы на самом деле не спрашиваете о сохранении Java.util.Timer, но для способа выполнения части кода, выполняемой в определенное время, это может быть лучшим (/ более простым) решением. Я не знаю, насколько хорошо это работает для довольно частых таймингов. Сервис можно возобновить при перезагрузке системы, поэтому не стоит беспокоиться о завершении работы телефона. Вы можете подписаться на событие запуска.

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