Проблема с taskAffinity и excludeFromRecents на Android 10 - PullRequest
1 голос
/ 27 марта 2020

У меня есть приложение, которое иногда отображает уведомления для пользователей. При нажатии на уведомление запускается действие «Отправка», которое вызывает 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

enter image description here

Это именно то поведение, которое я хочу. Дело в том, что когда я запускаю один и тот же код на Android 10 и нажимаю кнопку «Последние», я вижу два экземпляра моего приложения (ну, я думаю, две задачи):

enter image description here

Если я снова нажму кнопку «Недавние», чтобы восстановить второе действие, оно просто исчезнет, ​​и у меня будет только начальное действие. Как будто SecondActivity унаследовал от поведения excludeFromRecents, где это не так на других Android версиях (я даже тестировал на Android 11 Preview, и он работает как положено).

Я пытался удалить taskAffinity="" для DispatchActivity в манифесте, поэтому он имеет ту же привязку, что и другие действия в приложении, но у меня возникают проблемы при получении уведомления, когда мое приложение не запускается, когда действия, запускаемые из DispatchActivity, исчезают, как первоначально в Android 10, из-за excludeFromRecents tag.

У меня сейчас заканчивается идея, поэтому, если у вас есть какое-либо решение или, возможно, вы уже столкнулись с проблемой, я открыт для предложений.

Спасибо!

Вот пример кода, если необходимо: https://github.com/LoicJ/MultiTaskBugSample.git

...