Activity生命周期与启动模式基础知识备忘录

来源:互联网 发布:java 线程休眠 编辑:程序博客网 时间:2024/06/07 05:12

Activity生命周期:

onCreate:创建Activity,通常需要调用setContentView加载界面布局资源;

onRestart:重新启动,Activity从不可见到可见,onPause和onStop被执行了,又回到这个Activity;

onStart:正在被启动,已经可见,但没有出现在前台;

onResume:已经可见,出现在前台可与用户交互;

onPause:正在停止,通常onStop紧接着会被调用,但此时若快速返回当前Activity(用户操作难实现),那随后onResume被调用。可以存储数据、停止动画;

onStop:即将停止,可以做回收工作;

onDestroy:即将销毁,可以做回收和资源释放工作。


生命周期备注:

1、打开新Activity时,当前Activity回调步骤:onPause-》onStop,但当新Activity为透明主题,或者非全屏时(即当前Activity仍可见),则onStop不被调用;

2、当用户再次回到原Activity时,回调步骤:onRestart-》onStart-》onResume;

3、当用户按下back键时,回调步骤:onPause-》onStop-》onDestroy;

4、onCreate和onDestroy配对=》是否分配内存创建对象;onStart和onStop配对=》是否可见;onResume和onPause配对=》是否前台运行可交互;

5、打开新Activity时,原Activity的onPause先调用,才会调用新Activity的声明周期回调;

6、Activity异常结束会回调onSaveInstanceState,之后再次创建会调用onRestoreInstanceState,异常结束原因包括资源相关的系统配置发生改变(Activity的configChange属性可以防止此类重建,设置orientation、mcc、mnc、locale等等,配置变化时onConfigurationChanged方法会被调用,而非重建),或者内存资源不足;

7、从内存不足时Activity被系统杀死的话题,延伸出为什么使用Service的原因——如果一个进程中没有四大组件在执行,那么这个进程将很快被系统杀死,后台工作放入Service可以保证进程有一定的优先级,不容易轻易地被系统杀死;


Activity启动模式:

1、standard:每次启动都会创建Activity的新对象;

2、singleTop:栈顶的Activity被启动,不重复创建,只调用其onNewIntent函数;

3、singleTask:Task中的Activity实例具有唯一性,如果已经存在,只调用其onNewIntent函数,并将其置于栈顶(可能弹出其上的Activity实例);

4、singleInstance:Task中只存在一个唯一的Activity实例;

Intent的标记:

1、FLAG_ACTIVITY_NEW_TASK:将目标Activity实例放入一个新的Task中;

2、FLAG_ACTIVITY_CLEAR_TASK:先把和目标Activity有关联的Task销毁,然后启动一个新的Task,注意必须和1同时使用;

3、FLAG_ACTIVITY_CLEAR_TOP:使得同一个任务栈中其上方的实例弹出栈,singleTask默认有此效果;


原创粉丝点击