我有一个“活动”和一个通过jetpack navigation解决的片段。
我的一项活动在AndroidManifest.xml文件中将launchMode
设置为singleTop
。
当我在片段中使用startActivity
方法时,如果调用者Task的顶部堆栈中已经存在具有相同类型的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中使用?我错过了什么?