Есть ли какие -либо признаки, когда Android убивает услугу?

StackOverflow https://stackoverflow.com/questions/8368436

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

У меня есть сервис, работающий в своем собственном процессе.

Почему это в своем собственном процессе?

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

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

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

Нет.

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

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

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

Другие советы

Соответствует Жизненный цикл обслуживания В документе разработчика 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 ()? Я не уверен. Кто -то проверил это?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top