Settings->Application->ManageApplications -> --> Force Stop の手順に従ってアプリが強制停止された場合、android は Activity または Application の onDestroy を呼び出しますか? (そうでない場合、ユーザーによってトリガーされた強制停止が原因でアプリケーションが終了したかどうかを知る方法はありますか)。
3 に答える
アプリを強制的に停止すると、プロセス全体が強制終了されます(つまり、Process.killProcess(int pid)
)。アプリケーションに関連付けられているすべてのリソースは、カーネルによって削除および解放されます。したがって、このアクションを傍受する方法はありません。
アプリケーションを市場にリリースすると、開発者コンソールは、強制終了、クラッシュなどに関する統計を提供します(それがあなたが求めている理由である場合)。
要するに、いいえ、onDestroy()
呼び出されず、これを行うことはできません。Android はサポートしていません。
より拡張された答え...
onDestroy()
このシナリオでは呼び出されないようです。Toast
super.onDestroy を呼び出す前にこれを取得しようとしてこれをテストしましたが、Toast
メッセージは表示されませんでした。(そして、この投稿によると、onDestroy()
は本当に信頼性が低く、携帯電話では頻繁に呼び出されることはありませんが、エミュレーターでは呼び出される可能性があるため、注意してください)。代わりkillProcess()
に呼び出され、それをインターセプトすることはできません。
さらに、この投稿で受け入れられた回答によると、ユーザー制御の強制停止の後、タスクをキャッチして実行することさえできないようです。
いいえ、これは実際には不可能です。問題のAndroidコードは調べていませんが、「強制停止」はkill
アプリのプロセスIDを呼び出しているだけだと思います。したがって、それを傍受できる唯一の方法は、信号をトラップできる場合です。これは、Androidでは許可されていないと思います。
あなたが根付いていれば、おそらくこれを行うことができますが、標準的な方法ではできません。