Есть ли признаки того, что Android убивает сервис? - PullRequest
2 голосов
/ 03 декабря 2011

У меня служба работает в своем собственном процессе. Вечером кажется, что хорошо, но после того, как я заснул, я думаю, что Android берет на себя его топор.

Правильно ли я думаю, что onDestroy() не будет вызываться, когда Android убивает службу? Если нет, есть ли другое место, где зарегистрировано убийство?

Я думаю, мне нужно исследовать AlarmManager.

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

У меня служба работает в своем собственном процессе.

Почему это происходит по-своему?

Правильно ли я думаю, что onDestroy () не будет вызываться, когда Android убивает службу?

Может, не может.

Если нет, есть ли другое место, где зарегистрировано убийство?

номер

Я думаю, мне нужно исследовать AlarmManager.

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

Если ваша цель состоит в том, чтобы что-то делать периодически, , пожалуйста, , используйте AlarmManager - вот почему это так.

1 голос
/ 03 декабря 2011

В соответствии с жизненным циклом службы в документе разработчика метод onDestroy() будет вызываться при остановке или остановке службы.

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

В документе написано:

Note this means that most of the time your service is running, it may be killed by the system if it is under heavy memory pressure. If this happens, the system will later try to restart the service. An important consequence of this is that if you implement onStartCommand() to schedule work to be done asynchronously or in another thread, then you may want to use START_FLAG_REDELIVERY to have the system re-deliver an Intent for you so that it does not get lost if your service is killed while processing it. 

Здесь я думаю о том, что если служба убита операционной системой, ОС попытается перезапустить ее позже.Но в этом случае вызывается метод onDestroy ()? Я не уверен.Кто-нибудь проверял это?

...