アクティビティ/サービスが殺される直前に強制終了リクエストを通知する方法はありますか?
ユーザーが強制終了ボタンを押したときを意味しますMenu > Settings > Applications > Manage applications > app name > Force Close
。
ActivityManagerはホスティング プロセスを強制終了するだけなので、イベント/メッセージ/警告を取得できない可能性があります。確認するには、 onDestroyが呼び出されたかどうか、さらにisFinishingが呼び出されたかどうかを知らせる単一のアクティビティを持つアプリを作成できます。
Menu > Settings > Applications > Manage applications > app name > Force Close
役立つ場合に備えて、ソース内のパスは次のとおりです。
InstalledAppDetails:
https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/InstalledAppDetails.java
ActivityManager.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManager.java
ActivityManagerNative.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManagerNative.java
ネイティブ レベルを取得すると、汚い作業を行うサービスに引き渡します。繰り返しますが、プロセスを停止するだけだと思いますが、それは推測であり、チェックするソースのネイティブ インターフェイスの反対側がどこにあるのか、頭の中でわかりません (ただし、突き刺すとどこかにあります)。確かに知りたい)。
また、この情報が必要な理由を質問に追加することもできます。それによっては、達成したいことを達成するための別の/より良い角度があるかもしれません。
私はここと Android プログラミング全般にかなり慣れていないので、これが厳密に正しくない場合はご容赦ください。ただし、アプリケーションが応答しない (ANR) ダイアログが表示されるのは、アプリケーションが a) 応答しないか、b) キャッチされなかった例外をスローした場合のみであると理解しています。
a) の場合、アプリケーションは、ANR を生成するのに十分なほどハングアップしているため、妥当な時間内に強制終了通知に応答できません。ケース b) の場合、アプリケーションは既に死んでいます。