Androidで、自身のプロセスIDを指定してアプリのプロセスを強制終了する
android.os.Process.killProcess(android.os.Process.myPid());
文字通りアプリを強制終了する。
指定したプロセスとそれに関連するプロセスを強制停止する。
上記コードは自身のプロセスIDを拾っている。
実行するとデバッグモードであればログが出るはず。
推奨されないと巷には噂されるが、リファレンスには特にそうした記述は
見当たらない。自分が英語読めないだけという可能性も。。。
ただライフサイクルを巡回することなく、その時点で終了するので注意が必要。
(自分の実験結果。間違っている可能性もある。)
- Androidでアプリを完全終了させる方法について
Androidの場合、厳密にはアプリは終了しない。
onDestroyまでライフサイクルが巡回すれば、
アプリのプロセスキャッシュがRAMに保存される。
つまり、プロセスはそのまま保持されるので、
見えなくなるだけと考えたほうが良い。
(RAMが逼迫すれば、GCが稼働しアプリが完全に破棄される。DDMSで確認。)
もっとも、アプリの起動・終了付近の振る舞いについては
ManifestでlaunchModeを指定すれば、カスタマイズ可能。
どうしてもすぐ終了させたい場合、Activity#finish()を実行すれば
onDestroyまでライフサイクルが巡回するので
Activity内でonPauseをオーバーライドし、killProcessを実行させる。
@Override public void onPause() { super.onPause(); finish(); android.os.Process.killProcess(android.os.Process.myPid()); }
ただし、Toastも消えてしまうので注意。
(つまりToastはアプリのViewの一部ということである。また、Notificationは消えない。つまりNotificationはアプリとは連動していないこともわかる。)
また、アクティビティが終了する際のアニメーションもなくなるので、少し見栄えは悪くなる。