Activity 启动模式小结

启动模式分为4种,分别为

  1. Standrad
  2. SingleTop
  3. SingleTask
  4. SingleIntance

Standrad

就是默认的模式,启动多少个就是多少个

SingleTop

SingleTop 需要这样理解,SingleOnTop,当栈顶是我的时候,就不再创建新的实例。
例如,ABCD,启动D,还是ABCD。如果是ABDC,启动D,最后就变成ABDCD。

SingleTask

SingleOnTask的意思,我在这个任务栈是唯一的。需要注意的是,这货启动是默认自带clearTop效果的,也就是会把在它之后的Activity都清楚掉。
例如,任务栈中有ABDC,启动D,将会变成ABD,C将会被自动推出。

SingleIntance

这个可以看做是SingleTask加强版,使用这个属性的Activity,将会被单独放在一个任务栈中,然后这个Activity在进程中都是唯一个的

一个栗子

A 属于栈1,BC 属于栈2,A 为standard 模式,BC都是为singleTask模式。启动方式为这样 A->B->C->A->B。这样启动的时候,用户按下返回键就是桌面了。问题主要是在最后启动的B上,singleTask 自带clearTop 属性,将会把CA清除出去,A 和 B 又不是在相同的任务栈上,所以就回到桌面了。

启动Activity的一些常用的FLAG

FLAG_ACTIVITY_NEW_TASK

其实就是SingleTask 模式

FLAG_ACTIVITY_SINGLE_TOP

就是singletop

FLAG_ACTIVITY_CLEAR_TOP

清除在他最子上的活动,配合NEW_TASK使用

FLAG_ACTIVITY_EXECULE_FROM_RECENTS

不出现在最近应用列表中

小坑

singleTop的Activity,用startActivityForResult 启动的时候是立刻返回值的,但是是错误的result

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容