当前位置:科技动态 > android基础总结篇之二:Activity的四种launchMode

android基础总结篇之二:Activity的四种launchMode

  • 发布:2023-10-06 07:20

undefinedundefinedundefinedundefined图下半部分是SecondActivity跳转到FirstActivity后堆栈结构变化的结果。我们注意到 SecondActivity 消失了。是的,在这个跳转过程中,系统发现已经存在FirstActivity实例,所以就不再生成它了。不是创建新的实例,而是将 FirstActivity 之上的所有 Activity 实例弹出堆栈,并将 FirstActivity 变成堆栈顶部的对象并显示在屏幕前面。也许朋友们有疑问,如果SecondActivity也设置为singleTask模式,那么SecondActivity实例是否可以是唯一的呢?在我们的示例中,这是不可能的,因为每次从 SecondActivity 跳转到 FirstActivity 时,SecondActivity 实例都会被强制出栈。下次FirstActivity跳转到SecondActivity时,无法找到现有的SecondActivity实例,因此必须生成它。新实例。但如果我们有ThirdActivity,并且让SecondActivity和ThirdActivity互相跳转,那么就可以保证SecondActivity实例是唯一的。

这是单任务模式。如果找到对应的Activity实例,则该Activity实例之上的所有其他Activity实例都会从堆栈中弹出,使该Activity实例成为堆栈的顶部对象并显示在屏幕前面。

4.singleInstance

这种启动模式比较特殊,因为它会启用一个新的堆栈结构,将Activity放置在这个新的堆栈结构中,并确保没有其他Activity实例进入。

我们修改FirstActivity的launchMode="standard"和SecondActivity的launchMode="singleInstance"。由于涉及到多个栈结构,我们需要在每个Activity中显示当前栈结构的id,所以我们添加如下代码:

TextView taskIdView = (TextView) findViewById(R.id.taskIdView);

原文链接:http://www.sychzs.cn/liuhe688/article/details/6754323

相关文章