Activity生命周期及创建模式
2015-03-22 22:27
197 查看
Actiivty的生命周期,姑且理解为其方法的调用顺序
onCreate-onStart-onResume-onPause-onStop-onDestory。
如果是返回到这个Activity,就是onRestart-onStart
一般我们在onCreate的时候就加载控件,配置布局文件,如果是在onStart中写加载控件,有可能在返回这个Activity又再调用一次onStart导致多次加载,故不建议在onStart中写。
Activity的创建模式,或者说启动模式,有4种,standard,singleTop,singleTask,singleInstance
standard就是默认的启动模式,一般不声明都模式是这种,它是每次都会创建。比如启动了ActivityA,然后通过A启动B,现在在B中不通过返回键,但是要跳转到A(如在列表页选择添加,添加完成后返回列表页一样)。如果是这种模式,那么会再再次创建A,相当于历史栈里面是A-B-A。
singleTop是栈顶模式,必须在Menifest.xml中手动声明 android:launchMode="singleTop"。特点就是只要处于栈定,不再创建,如上面的例子,A创建B,B再创建A,如果A声明为singleTop模式,那么不会再次创建A,而是直接调用A的onStart方法。
也适用于那种防止多次点击(因网络延时导致)创建多次的场景,缺点是只使用于相邻两个Activity切换
singleTask是单任务模式,android:launchMode="singleTask"。特点是在整个栈中,只要有一个实例,那么将不再创建。使用场景,A创建B,B创建C,C创建D,D再直接返回A。如果此时A用singleTop模式,肯定没用,因为回退栈顶变成C了。但是如果A声明为单任务模式,那么将可以直接调用A,同时自动销毁B,C,D
这种模式其实可以理解为多个Activity下的singleTop模式
singleInstance是单实例模式,android:launchMode="singleInstance"。特点是它会创建一个独立的栈,专门存放这个实例。其他应用也可以调用它,注意是其他应用。比如应用A创建了ActivityA,A要访问应用B中的ActivityB(例如完成支付),成功后再返回A,如果是之前的模式,必定创建。如果A声明为单实例模式,那么不会,而是可以直接调用。
可以理解为多应用下的singleTask模式。使用例子:浏览器。
onCreate-onStart-onResume-onPause-onStop-onDestory。
如果是返回到这个Activity,就是onRestart-onStart
一般我们在onCreate的时候就加载控件,配置布局文件,如果是在onStart中写加载控件,有可能在返回这个Activity又再调用一次onStart导致多次加载,故不建议在onStart中写。
Activity的创建模式,或者说启动模式,有4种,standard,singleTop,singleTask,singleInstance
standard就是默认的启动模式,一般不声明都模式是这种,它是每次都会创建。比如启动了ActivityA,然后通过A启动B,现在在B中不通过返回键,但是要跳转到A(如在列表页选择添加,添加完成后返回列表页一样)。如果是这种模式,那么会再再次创建A,相当于历史栈里面是A-B-A。
singleTop是栈顶模式,必须在Menifest.xml中手动声明 android:launchMode="singleTop"。特点就是只要处于栈定,不再创建,如上面的例子,A创建B,B再创建A,如果A声明为singleTop模式,那么不会再次创建A,而是直接调用A的onStart方法。
也适用于那种防止多次点击(因网络延时导致)创建多次的场景,缺点是只使用于相邻两个Activity切换
singleTask是单任务模式,android:launchMode="singleTask"。特点是在整个栈中,只要有一个实例,那么将不再创建。使用场景,A创建B,B创建C,C创建D,D再直接返回A。如果此时A用singleTop模式,肯定没用,因为回退栈顶变成C了。但是如果A声明为单任务模式,那么将可以直接调用A,同时自动销毁B,C,D
这种模式其实可以理解为多个Activity下的singleTop模式
singleInstance是单实例模式,android:launchMode="singleInstance"。特点是它会创建一个独立的栈,专门存放这个实例。其他应用也可以调用它,注意是其他应用。比如应用A创建了ActivityA,A要访问应用B中的ActivityB(例如完成支付),成功后再返回A,如果是之前的模式,必定创建。如果A声明为单实例模式,那么不会,而是可以直接调用。
可以理解为多应用下的singleTask模式。使用例子:浏览器。
相关文章推荐
- Android 进阶之Activity生命周期与启动模式
- 第一章 Activity的生命周期和启动模式
- 对Activity生命周期和加载模式的理解
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (二)
- 第十二课:Activity的生命周期和加载模式
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- 第1章 Activity的生命周期和启动模式 1.1 Activity的声明周期全面分析
- Android小问题:SingleTask启动模式时,activity的生命周期
- Activity的生命周期和启动模式
- 关于Activity及启动模式,Fragment,Service的使用以及生命周期
- Activity的四种创建模式(SingleTop、standard、SingleTask、SingleInstance)
- Activity的生命周期和启动模式
- 笔记一 Android开发艺术探索之Activity的生命周期和启动模式
- [看书日记20160104]四大组件的工作过程, Activity的生命周期和启动模式
- Activity的生命周期函数、onActivityResult、intent和启动模式的调用关系
- Android拾萃- Activity的生命周期和启动模式
- Activity的生命周期详解+面试 Activity的启动模式
- Android开发笔记----Activity再学习(生命周期、启动模式、intent-filter)
- 回顾一下Activity的生命周期和启动模式的关系
- Activity的生命周期和启动模式--Activity的生命周期的全面分析