Если приложение принудительно останавливается, выполнив шаги Settings-> Application-> ManageApplications -> -> Force Stop, вызывает ли андроид onDestroy для Activity или Application? (Если нет, есть ли способ узнать, умерло ли приложение из-за силовой остановки, вызванной пользователем).
Принудительное прекращение приложения убьет весь процесс (т.е. с помощью Process.killProcess(int pid)
). Все ресурсы, связанные с приложением, будут удалены и освобождены ядром. Так что нет, вы не можете перехватить это действие.
Когда вы выпускаете свое приложение на рынок, консоль разработчика предоставит вам статистику относительно закрытия силы, сбоев и т. Д. (Если именно об этом вы спрашиваете).
Короче говоря, no, onDestroy()
не вызывается, и вы не можете этого сделать. Android не поддерживает его.
Более расширенный ответ …
onDestroy()
, похоже, не вызывается в этом сценарии. Я протестировал это, пытаясь заставить его поджечь меня до вызова super.onDestroy, но сообщение Toast
никогда не появлялось. (И, согласно этому сообщению , onDestroy()
действительно ненадежна и не будет вызываться часто, если вообще, на телефонах, тогда как ее можно вызвать на эмуляторе – так что имейте это в виду). Вместо этого killProcess()
, и мы не можем его перехватить.
Кроме того, в соответствии с принятым ответом в этом сообщении , похоже, мы не можем даже улавливать и выполнять задачи после остановки, контролируемой пользователем.
Нет. Это действительно невозможно. Я не рассматривал данный код Android, но я бы предположил, что «принудительная остановка» просто вызывает kill
на идентификаторе процесса вашего приложения. Таким образом, единственный способ, которым вы могли бы перехватить это, – это захватить сигналы, которые я не считаю Android.
Если бы вы были укоренены, вы могли бы сделать это, но не любым стандартным способом.