【发布时间】:2021-01-07 05:28:32
【问题描述】:
我浏览了以下文档链接:
https://android.jlelse.eu/android-activity-launch-mode-e0df1aa72242
在这里,我了解了所有四种启动模式的工作原理:
标准、SingleTop、SingleTask、SingleInstance。
还通过在 AndroidManifest.xml 文件中添加属性 'android:launchMode' 来清除实际操作。
问题在于以编程方式在 Activity 中添加标志。
现在,从文档中说:
FLAG_ACTIVITY_NEW_TASK
此标志的作用类似于“launchMode = singleTask”。
现在,要了解它的行为,首先我使用 AndroidManifest.xml 对其进行了检查。
我在我的项目中参加了四项活动:A、B、C、D。
将 “launchMode = singleTask” 设置为我的 Activity C。
导航是这样的,从 A -> B -> C -> D 和从 D -> C。
所以,当我从 D 转到 C 时,它不会创建新的 Activity C,而是让我进入 Activity C。这很好。明白了。
现在,我想以编程方式理解同样的事情。
因此,为此我从 AndroidManifest.xml 中删除了静态 “launchMode = singleTask”,并在 Activity C 中执行此操作,如下所示:
startActivity(Intent(ActivityC@this,ActivityD::class.java).setFlags(FLAG_ACTIVITY_NEW_TASK))
在活动 D 中我做了如下:
startActivity(Intent(ActivityD@this,ActivityC::class.java))
但是,这个程序化的东西不像我用 AndroidManifest.xml 那样工作,它正在打开新的 Activity C...而不是回到 Activity C。
可能是什么问题?还是我在这里做错了什么?请。指导。谢谢。
【问题讨论】:
-
singleTask和singleInstance的特殊启动模式取决于taskAffinity的使用。这可能非常复杂。如果您没有使用taskAffinity,那么您的特殊启动模式就不会按照您认为的方式工作。
标签: android kotlin android-intent android-activity launchmode