用户交互第一窗口,采用Activity栈管理Activity
栈顶可见,与用户交互
新的非全屏或者透明的Activity来到栈顶
失去焦点和与用户交互能力,状态信息、成员变量保留
内存极低情况会被系统回收
新的Activity完全覆盖
不再可见
状态信息、成员变量依然保留
被系统回收掉
只有三个状态稳定,其他状态为过渡状态
| Resumed | Paused | Stopped |
|---|---|---|
| Active/Running形态,栈顶交互 | 失去焦点,不接收输入 | 后台运行,不可见 |
standard
默认启动模式,每次都会创建新的实例
singleTop
检查栈顶,栈顶是当前Activity则复用,不是就创建
复用时会调用onNewIntent()
singleTask
检查整个栈,存在则置于栈顶,且该Activity之上的其他Activity全部销毁出栈
onNewIntent()会被调用
其他程序启动不同程序的singleTask模式的Activity,如果该Activity有任务栈则整栈切至前台,如果没有则创建任务栈移至前台
singleInstance
Activity出现在一个新的任务栈,该栈就只有这一个Activity
不同程序可共享这个Activity
FLAG_ACTIVITY_NEW_TASK
启动的每个Activity都在一个新的栈中,通常用在Service启动Activity,因为Service不存在Activity栈
FLAG_ACTIVITY_SINGLE_TOP
同singleTop
FLAG_ACTIVITY_CLEAR_TOP
同singleTask
FLAG_ACTIVITY_NO_HISTORY
当该Activity启动其他Activity后,自身就被销毁了,不会保留在Activity栈中
在<Activity>标签中使用
ps:我试了下,毫无效果
finishOnTaskLaunch
跟clearTaskOnLaunch差不多,上面是其他界面被销毁,这个效果是自己被销毁
alwaysRetainTaskState
设置为true,该Activity所在Task将不接收任何清除指令,一直保持当前Task状态
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2844/viewspace-2819629/ ,如需转载,请注明出处,否则将追究法律责任。