Как узнать, когда приложение закончено? - PullRequest
3 голосов
/ 21 октября 2011

Мне нужно знать, когда приложение завершает работу, чтобы остановить все локальные службы, которые оно запускает.

Как я могу это сделать?

Ответы [ 4 ]

1 голос
/ 21 октября 2011

Вы можете попробовать использовать onDestroy() (но не рекомендуется), чтобы узнать, когда Android очищает ваше приложение из памяти. или также можете использовать onStop(), чтобы узнать, когда действие отправляется в фоновом режиме.
Реализуйте эти два метода в первом действии стека Activity.

Посмотрим, поможет ли это, так как я еще не пробовал.

0 голосов
/ 21 октября 2014

Я сейчас решаю ту же проблему, у меня есть идея, и я буду ее реализовывать: 1. Статическая переменная называется (String currentShownActivity).2. в каждой Деятельности (onResume ()) я заполняю переменную именем активности).Поэтому, когда я перемещаюсь между действиями, переменная currentShownActivity изменилась и содержит имя текущего действия.3. в каждом onPause () установите флаг, который будет указывать на вызываемую активность onPause () (т. Е. Логическое значение IsPauseCalled). 4. в onStop () проверьте IsPauseCalled и имя действия.если вызвано действие onPause и имя в currentShownActivity не изменилось (это означает, что мы оставляем действие «без действия»), и это означает, что нажата клавиша [home].

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

0 голосов
/ 21 октября 2011
  1. Вы можете использовать try / finally для основной функции и выполнить очистку службы в последнем блоке

  2. Вы можете использовать финализатор объекта для выдачи команд завершения работы,Вы не будете точно знать, когда это произойдет, поскольку сборщик мусора будет работать в своем собственном темпе, но вы точно знаете, что это произойдет в конце концов.

0 голосов
/ 21 октября 2011

Одной из идей является использование BoundService, несмотря на то, что это собственный сервис вашего приложения. По определению Bound Service останавливается, когда разрывается соединение las.

Другая идея заключается в определении количества в объекте приложения (вы можете переопределить глобальный объект приложения). Вы можете увеличивать счетчик в каждом onResume и уменьшать в каждом onPause.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...