読者です 読者をやめる 読者になる 読者になる

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はアプリとは連動していないこともわかる。)
また、アクティビティが終了する際のアニメーションもなくなるので、少し見栄えは悪くなる。