Android 2.2(API Level 8)以上での自アプリの終了方法
何だかあまり情報がない気がするのでAndroid 2.2以上での自アプリの終了方法を書いておく。
2.1までは「ActivityManager#restartPackage」で行けたけど2.2からdeprecatedになって、「ActivityManager#killBackgroundProcesses」のラッパーになった。
おそらくフロントに出てるものは終了させないという方針であるため、一旦バックグラウンドにして終了とかプロセスをざっくりexitで強制終了(さすがに論外だろう)といった情報が見つかるけれど、たぶん、以下のやり方がよいんじゃないかと。
public static exitApplication(Context context) { Intent intent = new Intent(context, 【スタックの一番最初にあるアクティビティ】); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(【スタックの一番最初にあるアクティビティ】.EXTRA_EXIT_APPLICATION, true); context.startActivity(intent); }
public class 【スタックの一番最初にあるアクティビティ】 extends Activity { public static final String EXTRA_EXIT_APPLICATION = "EXTRA_EXIT_APPLICATION"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); if (intent.hasExtra(EXTRA_EXIT_APPLICATION)) { finish(); return; } ※以下、通常処理。 } }
ちなみにこのアクティビティはHOMEから直接呼ばせずにHOME起動のときは非表示のアクティビティを一個挟む(そいつ自身は自分をすぐにfinish()して↑のアクティビティを起動する)方がいろいろ細工しやすくてよいだろうさ。
上記の方法は明示的に書いてないが、以下のページがまとまっていてよいかも。
http://www.ecoop.net/memo/2011-01-24-1.html