Намерение не подхвачено singleTop Activity

У меня есть Activity, который определяется как 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 () не вызывает вызов.

Как я могу настроить этот notificaiton так, чтобы мой SingleTop Activity отправил намерение, когда он находится в состоянии паузы / остановки (а также все еще работает в других случаях, о которых я упоминал). Я думаю, что есть флаг для моего объекта notificationIntent, но функции флагов на самом деле не ясны для случая действий singleTop.

Если ваше приложение составлено более чем одним действием, singleTop действия должны быть определены как singleTop если вы хотите получить onNewIntent() когда эта активность активна.

Предположим, что основной активностью является A и определяется как singleTop и оттуда вы начинаете активность B не определенную как singleTop . Если теперь вы выбираете уведомление, которое вызывает ваше приложение, приложение начнет действие B а onNewIntent() не будет onNewIntent() .

Вы также можете переопределить это поведение, добавив флаг Intent.FLAG_ACTIVITY_CLEAR_TOP который удаляет активность B из стека, а Activity A получит вызов onNewIntent() .