1つのインスタンスのみが存在するようにsingleTopとして定義されているアクティビティがあります。
<activity
android:name=".MyMainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:launchMode="singleTop" android:multiprocess="true">
いくつかのデータを使用して通知インテントを設定し、それをPendingIntentに含めて、通知マネージャーに送信します。
Intent notificationIntent = new Intent(context, MyMainActivity.class);
notificationIntent.setAction(MyMainActivity.CustomInternalMessageAction);
notificationIntent.putExtra(MyMainActivity.ReceiveTestMessage, rawMessageText);
...
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
mNotificationManager.notify(number, notification);
アクティビティが実行されていない場合、インテントは期待どおりにonCreate()を介してアクティビティを開始します。
アクティビティが実行されているが、停止状態/フォアグラウンドではなく(ホームボタンをクリックしたときなど)、通知がクリックされた場合、アクティビティのonNewIntent()が期待どおりに呼び出されます。
ただし、アクティビティがフォアグラウンドにあるときにすでに呼び出されている場合、onNewIntent()は呼び出されません。
一時停止/停止状態のときにsingleTopアクティビティにインテントが送信されるように、この通知を設定するにはどうすればよいですか(また、前述した他の場合でも機能します)。NotificationIntentオブジェクトに設定するフラグがあると思いますが、singleTopアクティビティの場合、フラグの機能は実際には明確ではありません。