Включение псевдонима активности с одной вершиной

В моем приложении есть активность с псевдонимом: MyActivity а также MyAliasActivity зарегистрирован в Манифесте. Назначение псевдонима - предоставить дополнительный фильтр намерений. Эта функция может быть включена / отключена во время выполнения пользователем. Активность и псевдоним есть singleTop модификатор.

Однако, если я запускаю свое приложение с отключенным компонентом (MyActivity вверху), затем я включаю его и транслирую событие, соответствующее фильтру намерений, MyActivity создается еще раз (по псевдониму)- у меня есть два из них в backstack, что нежелательно.

Может ли он справиться каким-либо образом? Мне нужно иметь только одну активность в бэкстеке.

1 ответ

Решение

Вы должны использовать singleTask вместо singleTop, singleTask гарантирует, что у вас есть только один экземпляр Activity в backStack. Если вы запускаете действие во второй раз с singleTask Режим запуска, onNewIntent будет запущен вместо создания новой деятельности. Другое решение заключается в использовании singleInstance, это работает почти так же, как singleTask, сохраняя только один экземпляр Activity и работая onNewIntent если он уже создан.

Для получения дополнительной информации вот хорошее объяснение того, как это работает:

https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Справочник Google:

https://developer.android.com/guide/topics/manifest/activity-element.html

Другие вопросы по тегам