四种启动模式:
(1) . Standard(标准模式)---系统默认的模式
①在不指定的情况下,系统会默认使用该模式的启动方式
②每次启动一个Activity,都会创建一个Activity实例,会将他方法任务栈的顶部考虑是否存在,就算栈中有Activity,都不会去关心,仍旧会创建Activity实例
③onCreate()-->onStart()-->onResume()每次被启动的时候都会被调用
(2)。SingleTop(栈顶模式)也称 ”栈顶复用”
①如果有新的Activity存在在任务栈的栈顶时,那么Activity就不会重新创建,而是去复用已存在再任务栈栈顶的那个Activity。
如果用singleTop的模式去启动Activity,也不会去重新创建,而是去复用
②如果想要开启一个MainActivity的时候确发现MainActivity确不在栈顶而是OtherActivity在栈顶,这时候尽管是用SingleTop的模式去启动MaingleActivity,但是由于不在顶部,那么就会和标准模式一样回去重新创建一个新的Activity
③当前栈中不存在该Activity的实例时,那么就会和标准模式一样
(3)singTask(栈的复用) 也称单例模式
检测的是整个栈中是否存在要启动的MainActivity,如果存在就直接将MainActivityy放到栈顶,然而MainActivity上面的其他的Activity都会被销毁
由上图可只MainActivity在底部的时候系统会将MainActivity放于栈顶,同时会将上方的Activity移除
总结而言:
(1).singTask会根据taskAffiity去寻找当前是否存在一个对应名字的任务栈
singTask是任务相关性
(2) 如果不存在就会创建一个新的Task
(3) 如果存在就得到该任务栈,查找它里面是都存在实例对象
应用场景:应用的主界面
(4).SingleInstance
(1).SingleInstance模式下启动的Activity具有全局唯一性
(2) 如果在启动这样的Activity时,系统这个时候就是单利的,说明就已经存在了一个实例
(3) .SingleInstance模式下启动的Activity具有独占性
独占性就是会独自占用一个任务栈,
网友评论