1 Activity的生命周期
1 Activity生命周期的七个方法
Android中Activity在生命周期中最多有四种状态:
- 运行状态
- 暂停状态
- 停止状态
- 销毁状态
Activity类中定义了七个回调方法,覆盖Activity生命周围的每一个环节。
- onCreate() 创建时调用,完成初始化工作
- onStart() 由不可见变为可见时调用
- onResumt() 由于用户进行交互时调用
- onPause() 系统准备去启动另外一个活动时调用
- onStop() 活动完全不可见时调用
- onDestory() 活动在完全销毁之前调洪
- onRestart() 活动由停止状态恢复运行状态之前调用
2 其他的方法
http://blog.csdn.net/liuhe688/article/details/6733407
- onWindowFocusChanged
在Activity窗口获得或者失去焦点时调用,例如创建时首次呈现在用户面前,Activity被其他Activity覆盖, 当前Activity转到其他Activity或者Home键回到主屏,用户退出当前Activity,以上几种情况都会被调用
onSaveInstanceState
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。
onRestoreInstanceState:
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。我们可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。
2 Activity的启动模式
- standard: 默认启动模式,当创建activity时不会在意返回栈中是否已经有这个活动;
- singleTop: 当启动的acitivity就在返回栈的栈顶时,则直接使用该activty而不用重新创建;
- singleTask:当某个activty的启动模式为singleTask时,每次启动该activty都会检查返回栈中是否存在该activity,如果存在,则该activity之前的活动统统出栈,如果不存在就创建一个新的活动;
当activy制定了不同的的taskAffinity, 会启动一个新的返回栈
- singleInstanc: 会启动一个新的返回栈来管理该activity, 不管是哪个应用程序来访问这个活动,都会公用一个返回栈,解决了共享activity实例的问题。
3 Activity的intent-filter
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
- 如果app中没有activity的action设置为Main(不管Category是否设置为Launcher),也就不会有图标出现
- 如果app中多个Activity同时设定了action为Main, Catogory设置为Launcher, 则出现多个图标,分别进入不同的activity