У меня есть приложение, которое иногда отображает уведомления для пользователей. При нажатии на уведомление запускается действие «Отправка», которое вызывает startActivities
с некоторыми намерениями, приводящими к правильной активности в зависимости от полезной нагрузки уведомления. Вот как оно объявляется в манифесте в соответствии с https://developer.android.com/training/notify-user/navigation#ExtendedNotification
android:name=".DispatchActivity"
android:taskAffinity=""
android:excludeFromRecents="true"
android:launchMode="singleTask" />
Когда я нажимаю уведомление, DispatchActivity
запускается с Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
и запускает новое действие с Intent.FLAG_ACTIVITY_NEW_TASK
, прежде чем он немедленно вызовет fini sh (). Если мое приложение уже было запущено, новое действие (назовем его second Activity
) запускается поверх предыдущего уже запущенного действия, поэтому, когда вы нажимаете кнопку «Последние», вы можете видеть мое приложение только один раз.
![enter image description here](https://i.stack.imgur.com/j7ofw.png)
![enter image description here](https://i.stack.imgur.com/nkIVO.png)
Это именно то поведение, которое я хочу. Дело в том, что когда я запускаю один и тот же код на Android 10 и нажимаю кнопку «Последние», я вижу два экземпляра моего приложения (ну, я думаю, две задачи):
![enter image description here](https://i.stack.imgur.com/Ybq5F.png)
Если я снова нажму кнопку «Недавние», чтобы восстановить второе действие, оно просто исчезнет, и у меня будет только начальное действие. Как будто SecondActivity унаследовал от поведения excludeFromRecents
, где это не так на других Android версиях (я даже тестировал на Android 11 Preview, и он работает как положено).
Я пытался удалить taskAffinity=""
для DispatchActivity
в манифесте, поэтому он имеет ту же привязку, что и другие действия в приложении, но у меня возникают проблемы при получении уведомления, когда мое приложение не запускается, когда действия, запускаемые из DispatchActivity, исчезают, как первоначально в Android 10, из-за excludeFromRecents
tag.
У меня сейчас заканчивается идея, поэтому, если у вас есть какое-либо решение или, возможно, вы уже столкнулись с проблемой, я открыт для предложений.
Спасибо!
Вот пример кода, если необходимо: https://github.com/LoicJ/MultiTaskBugSample.git