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 という判断なんですが、なんとなく微妙。

ちなみに

アプリ自体は重複して起動するような事は無い、という前提です。念のため。