launchMode
ええと、電源投入な BroadcastReceiver を作って Activity 起動、な実装をしてたのですが、Home ボタンで同じアプリを起動すると複数起動するぜ、というコメントが。
確かに onReceive メソドな実装は以下になってました。
public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, HogeActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); }
デフォルトで Intent なフラグに FLAG_ACTIVITY_NEW_TASK を選択してた場合、Home で戻ってランチャからアプリを選択した場合、別タスクとしてアプリが起動する模様。
対応としては
AndroidManifest において起動される Activity な launchMode は singleTask を指定する事で
android:launchMode="singleTask"
回避できているのかどうなのか。つうかこれ、singleTop と singleTask とどちらが適切なのだろうか。とりあえず singleTask という判断なんですが、なんとなく微妙。
ちなみに
アプリ自体は重複して起動するような事は無い、という前提です。念のため。