События выключения в Android - PullRequest
7 голосов
/ 14 марта 2012

Можно ли перехватить событие отключения телефона или использовать другой способ взлома?У меня есть постоянно работающий сервис, который является частью нерыночного приложения, которое собирает некоторые аналитические данные.Я хотел бы попросить аналитиков завершить сеанс и сообщить, а затем возобновить выключение системы.

Я пытался вызвать событие из частей служб onDestroy или onShutdown, но телефон выключится, не давпришло время сообщать.

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

Ответы [ 2 ]

9 голосов
/ 14 марта 2012

Построить широковещательный приемник при ловле намерения ACTION_SHUTDOWN.

В методе onReceive () вы можете выполнить то, что пытаетесь сделать.

http://developer.android.com/reference/android/content/Intent.html#ACTION_SHUTDOWN

3 голосов
/ 14 марта 2012

Вы можете попробовать зарегистрировать перехват выключения, используя метод Runitme addShutdownHook (Thread hook) .

Дополнительно указывается ссылка на метод:

Если runFinalizersOnExit (логический) был вызван с истинным аргументом, сборка мусора и доработка будут после всех хуков либо закончили, либо потерпели неудачу. Затем виртуальная машина завершает свою работу.

Итак, теоретически виртуальная машина не завершит работу, пока не закончится ваш поток.

...