首页 > 解决方案 > 具有 singleTop 启动模式的 startActivityForResult 在 Android 9 上无法正常工作

问题描述

我有一个通过喷气背包导航解决的活动和片段。

我的一项活动已launchMode设置为singleTopAndroidManifest.xml 文件。

当我startActivity在我的片段中使用方法时,如果在调用者任务的堆栈顶部已经有一个具有相同类型的 Activity 实例,则它按预期工作,没有任何新的 Activity 创建。

但是如果使用startActivityForResult新的 Activity 实例,即使它已经在后栈的顶部,它也会继续创建。

我在最新的 Android 9 版本上遇到的这个问题。我在旧版本的 Android (4.1) 上测试了我的代码,并且singleTop启动模式按预期工作。

如果我使用以下代码以编程方式设置启动模式,那么有趣的是:

val intent = Intent(context, T::class.java)
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP

singleTop启动模式可以startActivityForResult在 Android 9 上正常工作,没有任何问题。

那么为什么它在 AndroidManifest.xml 中不起作用?我错过了什么?

标签: androidandroid-fragmentsandroid-activitykotlinandroid-fragmentactivity

解决方案


推荐阅读