前言
读了《Android开发艺术探索》第一章以后,对Activity生命周期有了自己的一些小理解。特此记录
1.生命周期分类
就像书中所说,Activity的生命周期分为两类,一类是典型情况下的生命周期,一类是异常情况下的生命周期
2.关于典型生命周期
值得记录的想法 ①onStart 和onStop 是从是否可见的角度来回调的,onResume 和onPause 是从是否可以交互的角度来回调的。 ②onPause 不能做一些太耗时的操作。 为什么呢?因为在一个Activity启动另外一个Activity的时候,生命周期是这样的(比如A启动B) A:onPause B:onCreate B:onStart B:onResume A:onStop 所以如果在onPause 中做了一些太耗时的操作,会影响新Activity的展示。所以不能在onPause 中做重量级的操作
3.关于异常生命周期
3.1 Activity被杀死并重新创建
这个一般就是说的横竖屏切换的时候,Activity会销毁重建。 值得记录的想法 ①onSaveInstanceState 的调用时机是在onStop 之前,和onPause 没有必然关系。onRestoreInstanceState 是在onStart 之后。和onResume 没有必然关系。 ②当Activity即将被销毁并且有机会重新显示的话,系统才会去调用onSaveInstanceState 。当Activity正常销毁的时候,不会调用。 ③如果不想它重新创建,也有办法,就是设置configChanges 属性。比如 android:configChanges="orientation" 就可以防止在屏幕旋转的时候重新创建。
3.2 内存不够了,低优先级的Activity被杀死
值得记录的想法 ①Activity有个优先级,前台Activity(比如onResume 阶段的)->可见Activity(比如onStart 阶段的)->后台Activity(比如执行了onStop 阶段的)。 ②当内存不足的时候,就会按照这个优先级去杀死Activity所在进程,后续也是通过调用onSaveInstanceState 和onRestoreInstanceState 来恢复数据。 ③如果一个进程中没有四大组件在执行,那么这个进程将很快被系统杀死。因此,一些后台工作不适合脱离四大组件而独自运行在后台中,这样进程很容易被杀死。比较好的方法是将后台工作放入Service中从而保证进程有一定的优先级,这样就不会被系统轻易杀死。
|