启动模式 Singletop 无法使用权​​限对话框显示

Posted

技术标签:

【中文标题】启动模式 Singletop 无法使用权​​限对话框显示【英文标题】:Launch Mode Singletop not working with permisison dialog showing 【发布时间】:2018-09-30 20:59:09 【问题描述】:

我有一个Activity 启动模式singleTop 显示权限对话框。

但是当权限对话框出现并且新的 Intent 出现在该活动时,另一个实例被创建。 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);

【问题讨论】:

添加一些代码来解释问题。和清单条目。 您能否将launchMode也添加到您的呼叫意图中:loginIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 如果没有权限弹出窗口,它可以工作 你在onCreate()请求权限吗? @Sagar 是在 onCreate 中请求 【参考方案1】:

显示权限对话框通常会在您的Activity 之上启动另一个Activity(系统Activity)。在这种情况下,您的Activity 将被暂停(调用onPause())。此时,您的Activity 不再是堆栈中的顶部Activity,因此即使指定了“singleTop”启动模式和/或Intent.FLAG_ACTIVITY_SINGLE_TOP,再次启动Activity 也会创建另一个实例。

见Request permission dialog pauses my activity

要解决此问题,您应确保尽早获得可能需要的所有权限,或者重新架构您的应用程序,以免出现多个实例的问题。

【讨论】:

以上是关于启动模式 Singletop 无法使用权​​限对话框显示的主要内容,如果未能解决你的问题,请参考以下文章

什么时候需要在 android 小部件或应用程序中使用 singleTop launchMode?

Activity的四种启动模式

用代码理解Acticity启动模式

活动的启动模式

Activity启动模式详解

Activity启动模式详解