Подтвердить что ты не робот

Почему нет метода Service.onStop?

Я много читал о сервисе Android. Насколько я понимаю, жизненный цикл:

void onCreate() 
    void onStart(Intent intent) 
    ...
void onDestroy()

http://www.linuxtopia.org/online_books/android/devguide/guide/topics/fundamentals.html

Но метода onStop нет. Вопросы:

  • Почему нет метода остановки?
  • Что происходит, когда на моем сервисе выполняется запрос stopService? (извне, возможно, сам Android). Могу ли я обнаружить это событие?
  • Я бы хотел (или, по крайней мере, проверять), чтобы моя служба была одиночной в рамках процесса. Как я могу это сделать (или Android поддерживает это за кулисами)?

Для контекста у меня есть некоторые ресурсы, которые я бы хотел выделить и освободить во время работы службы (в "запуске" ), и еще один набор ресурсов, которые я бы хотел выделить и освободить, пока служба является "созданного" состояния.

4b9b3361

Ответ 1

Как я понимаю, жизненный цикл:

onStart() устарел на несколько лет. onStartCommand() - это текущий метод жизненного цикла.

Почему нет метода остановки?

Потому что нет необходимости в одном.

Что произойдет, если в моей службе сделан запрос stopService?

Вы будете вызваны с помощью onDestroy().

Могу ли я обнаружить это событие?

Вы можете переопределить onDestroy().

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

Услуги - это естественные одиночные игры. В любой момент времени будет 0 или 1 экземпляр вашей службы.

Для контекста у меня есть некоторые ресурсы, которые я бы хотел выделить и освободить во время работы службы (в "запуске" ), и еще один набор ресурсов, которые я бы хотел выделить и освободить, пока служба является "созданного".

"Созданное" состояние используется как с шаблоном команды (startService(), так и onStartCommand()) и шаблоном привязки (bindService() и onBind()). Следовательно, если вы вызываете startService(), ваша служба будет чисто в "созданном" состоянии, надеюсь, меньше миллисекунды.