Режим запуска Singletop не работает с отображением диалогового окна разрешений

У меня есть Activity с режимом запуска singleTop, который показывает диалоговое окно разрешений.

Но когда присутствует диалоговое окно разрешений и для этого действия приходит новое намерение, создается другой экземпляр. onNewIntent() не звонят.

Любое обходное решение для этого?

Ниже приведена запись манифеста.

<activity
        android:name=".auth.activity.AJRAuthActivity"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.PageIndicatorDefaults"
        android:launchMode="singleTop"
        android:windowSoftInputMode="adjustResize" />

Как я начинаю эту деятельность:

Intent loginIntent = new Intent(context, AJRAuthActivity.class);
context.startActivity(loginIntent);

person Gaurav    schedule 20.04.2018    source источник
comment
Добавьте код, объясняющий проблему. и запись манифеста.   -  person ADM    schedule 20.04.2018
comment
Можете ли вы также добавить launchMode к своему намерению вызова: loginIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);   -  person Christopher    schedule 20.04.2018
comment
хорошо, это работает, если всплывающее окно разрешения не существует   -  person Gaurav    schedule 20.04.2018
comment
вы запрашиваете разрешение в onCreate() ?   -  person Sagar    schedule 20.04.2018
comment
@Sagar да запрос в onCreate   -  person Gaurav    schedule 20.04.2018
comment
попробуйте запросить его в onStart и проверьте, правильно ли он себя ведет. Раньше у меня работало   -  person Sagar    schedule 20.04.2018
comment
ок попробую проверю   -  person Gaurav    schedule 20.04.2018


Ответы (1)


Отображение диалогового окна разрешений обычно запускает другой Activity (системный Activity) поверх вашего Activity. В этом случае ваш Activity будет поставлен на паузу (вызывается onPause()). В этот момент ваш Activity больше не является верхним Activity в стеке, так что другой запуск Activity создаст другой экземпляр, даже если указан режим запуска "singleTop" и/или Intent.FLAG_ACTIVITY_SINGLE_TOP.

См. Диалог запроса разрешения приостанавливает мою активность

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

person David Wasser    schedule 23.04.2018