activity四种启动模式
一、standard:
默认启动模式,每次启动都会创建一个新的activity实例对象
FirstActivity SecondActivity 均为 standard
生命周期:初始创建
FirstActivity:onCreate、onStart、onResume
1.1创建成功 跳转下一界面
FirstActivity: onPause
SecondActivity: onCreate
SecondActivity: onStart
SecondActivity: onResume
FirstActivity: onStop
1.2、返回当前界面 SecondActivity 调用finish方法 同返回键
SecondActivity: onPause
FirstActivity: onRestart
FirstActivity: onStart
FirstActivity: onResume
SecondActivity: onStop
SecondActivity: onDestroy
1.3、返回当前界面 SecondActivity 调用startActivity方法
SecondActivity: onPause
FirstActivity: onCreate
FirstActivity: onStart
FirstActivity: onResume
SecondActivity: onStop
1.4、自己启动自己 调用startActivity方法 生命周期与2 一致
1与2 差异在于activity是否重建 对标standard 启动即新建
2、singleTop:
如果activity实例位于当前任务栈顶,就重用栈顶实例并回调该实例的onNewIntent方法,否则走新建流程
FirstActivity 为 singleTop SecondActivity 为 standard
生命周期:初始创建
FirstActivity:onCreate、onStart、onResume
2.1 创建成功 跳转下一界面
见1.1
2.2、返回当前界面 SecondActivity 调用finish方法 同返回键
见1.2
2.3、返回当前界面 SecondActivity 调用startActivity方法
SecondActivity: onPause
FirstActivity: onCreate
FirstActivity: onStart
FirstActivity: onResume
SecondActivity: onStop
2.4、自己启动自己 调用startActivity方法
FirstActivity: onPause
FirstActivity: onNewIntent
FirstActivity: onResume
重点在于 当前即将新建Activity对象是否已是栈顶元素 是则重用 否则新建
3、singleTask:
FirstActivity 为 singleTask SecondActivity 为 standard
生命周期:初始创建
FirstActivity:onCreate、onStart、onResume
3.1创建成功 跳转下一界面
见1.1
3.2、返回当前界面 SecondActivity 调用finish方法 同返回键
见1.2
3.3、返回当前界面 SecondActivity 调用startActivity方法
SecondActivity: onPause
FirstActivity: onNewIntent
FirstActivity: onRestart
FirstActivity: onStart
FirstActivity: onResume
SecondActivity: onStop
SecondActivity: onDestroy
重点在最后两个方法 SecondActivity 在跳转FirstActivity后销毁了
3.4、自己启动自己 调用startActivity方法
FirstActivity: onPause
FirstActivity: onNewIntent
FirstActivity: onResume
总结:若singleTask activity位于栈顶时 重新satrtActivity 不会创建新的对象而是 调用onPause onNewIntent onResume 方法
若singleTask activity不在栈顶时且栈中已存在该对象 重新satrtActivity 会创建新的activity对象并且销毁原对象到栈顶之间的所有activity对象。若栈中无该对象重新satrtActivity会按默认启动方式进行
注:taskAffinity 这个属性与singleTask 结合会影响生命周期(没研究过)
4、singleInstance:
singleInstance activity所在的栈中只会有这一个activity
网友评论