您的位置:首页 > 其它

Activity的启动模式有哪几种,分别用于什么场景?

2018-01-05 10:47 176 查看
(1) standard: 标准模式,每次启动Acticity都会创建一个新的Activity实例,并且将其压如任务栈栈顶,而不管这个Activity是否已经存在(activity的三个回调都会启用,onCreate—onStart–onResume)

(2) singletop: 栈顶复用模式,这种模式下如果Activity已经位于任务栈的栈顶,那么此Activity不会重复创建,他启动的三个回调不会调用,同时Activity的onNewIntent方法被回调,如果Activity已经存在但没有位于栈顶,那么跟standard模式一样

(3) singtask:栈内复用模式,创建这样Activity的时候,首先会先确认他所需任务栈已经创建,否则先创建所需的任务栈,然后放入Activity,如果栈内已经有了Activity的实例那么,把这个Activity调到栈顶,同时回调onNewIntent方法,并且清楚当前Activity上面所有的Activity

(4) singleInstance:加强版的sngletask,这种模式的Acticity只能单独处于一个任务栈中,后续请求都不需要重新创建Activity,除非这个任务栈被系统删除

清晰地描述下onNewIntent和onConfigurationChanged这两个生命周期方法的场景?

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);

这个方法会在singletop和singletask,栈内已经存在atcivity,不在走onCreate,而会调用onNewIntent可以在这里处理intent传过来的数据
}


@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
有的时候我们会在AndroidManifest.xml中加入这样的属性
android:configChanges="orientation| keyboard "
这个属性的意思是在改变屏幕方向不在调用onCreate而去调用onConfigurationChanged方法,如果不设置这个属性,改变屏幕方向会重复调用onCreate,造成重复初始化
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: