Сила Android Остановить обратный вызов приложения?

Если приложение принудительно останавливается, выполнив шаги Settings-> Application-> ManageApplications -> -> Force Stop, вызывает ли андроид onDestroy для Activity или Application? (Если нет, есть ли способ узнать, умерло ли приложение из-за силовой остановки, вызванной пользователем).

Принудительное прекращение приложения убьет весь процесс (т.е. с помощью Process.killProcess(int pid) ). Все ресурсы, связанные с приложением, будут удалены и освобождены ядром. Так что нет, вы не можете перехватить это действие.

Когда вы выпускаете свое приложение на рынок, консоль разработчика предоставит вам статистику относительно закрытия силы, сбоев и т. Д. (Если именно об этом вы спрашиваете).

Короче говоря, no, onDestroy() не вызывается, и вы не можете этого сделать. Android не поддерживает его.

Более расширенный ответ …

onDestroy() , похоже, не вызывается в этом сценарии. Я протестировал это, пытаясь заставить его поджечь меня до вызова super.onDestroy, но сообщение Toast никогда не появлялось. (И, согласно этому сообщению , onDestroy() действительно ненадежна и не будет вызываться часто, если вообще, на телефонах, тогда как ее можно вызвать на эмуляторе – так что имейте это в виду). Вместо этого killProcess() , и мы не можем его перехватить.

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

Нет. Это действительно невозможно. Я не рассматривал данный код Android, но я бы предположил, что «принудительная остановка» просто вызывает kill на идентификаторе процесса вашего приложения. Таким образом, единственный способ, которым вы могли бы перехватить это, – это захватить сигналы, которые я не считаю Android.

Если бы вы были укоренены, вы могли бы сделать это, но не любым стандартным способом.