シナリオは次のとおりです。
AndroidManifest.xml では、単一のアクティビティを で定義しandroid:launchMode="singleTask"
ます。(これは、アプリケーションのライフサイクル全体を通じて、スタック内に単一のアクティビティが存在する必要があることを意味しますよね?)
の間Activity.onCreate()
に、ブロードキャスト レシーバがプログラムによって作成され、着信 SMS をリッスンします。Activity.onPause()
受信機は設計後もアクティブなままです。
ユーザーがアプリケーションを使い終わったら、デバイスのホーム ボタンを押すと、呼び出しが行われ、Activity.onPause()
アプリケーションが消えます。デバイスに Android のホーム画面が表示されます。
SMS を受信すると、ブロードキャスト レシーバーは SMS を受信し、次の方法でアクティビティを表示しようとします。
Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
ただし、アクティビティはユーザーには表示されません。
- a) どうして?
- b) Activty を前面に出すにはどのような方法がありますか?