アプリケーションを終了させる
結論から言うと Android でアプリケーションを終了させる方法は用意されていない。
とはいえいくつか回避策がある。
- Activity#moveTaskToBack(true) でホームスクリーンに戻ることができる。
ただし、この場合 Task は破棄されないので、再びこのアプリケーションを開いた際は閉じた画面から開始される。 - Task の Activity で一つ一つ Activity#finish() をコールする。
Task の Activity 一覧を取得する方法はないので Activity各自の onPause(...) 等で finish() をコールするしかない。 - ルートActivity が決まっている場合、 Intent.FLAG_ACTIVITY_CLEAR_TOP フラグをつけ、その Activity を開始する。
Extras に exitキー を true で追加するなどで終了する旨を表現し、ルートActivity ではその値を見て finish() を実行する。
回避策として使えそうで使えないものもいくつかあるので注意。
- Activity が一つでも残っている状態で System.exit() を実行する
エラーやANRダイアログで強制終了されたときのように Task が復元され、終了した Activity から開始される。
ちなみにAndroid でアプリケーションを終了させる方法が用意されていないのは意図的にそう設計されているものでありAndroidの不具合というわけではない。
(それに関しては参考としてあげた StackOverflow の回答二つが秀逸。)
参考
- Quitting an application - is that frowned upon?