对于android新手来说,大都对activity的生命周期不是太了解,有关activity的生命周期方法执行顺序,我这里看到一篇文章http://www.2cto.com/kf/201409/334386.html
如下是一段典型的从AActivity切换到BActivity的日志,:
10-17 20:54:46.997: I/com.example.servicetest.AActivity(5817): onPause() 1166919192 taskID=66
10-17 20:54:47.021: I/com.example.servicetest.BActivity(5817): onCreate() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onStart() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onResume() 1166971824 taskID=66
10-17 20:54:47.099: I/com.example.servicetest.AActivity(5817): onStop() 1166919192 taskID=66
先AActivity的onPause()被调用,然后是BActivity的初始化流程(onCreate() --> onStart() --> onResume()),再然后是AActivity的onStop()被调用。
了解了activity生命周期方法的执行顺序之后,我们就可以解决文章标题中提到的问题。
新手们大多都喜欢把所有的初始化都写在onCreate()方法里面
如果所有的初始化都在onCreate()中实现,会有什么问题?
出自http://www.2cto.com/kf/201409/334386.html
首先,Activity的onCreate()被调用时,Activity还不可见,如果要做一些动画,既然视图还不存在,在onCreate中来启动动画,明显有问题;
其次,AActivity 切换到 BActivity,再切换到 AActivity(我们假定是AActivity的同一个实例),由于实例已经存在,所以onCreate不会再被调
用,那AActivity从后台切换至前台时,有可能需要一些初始化,那就没法再被调用到了,也有问题;
所以Activity从后台切换至前台时,如果需要一些初始化,就必须将初始化写在onResume ()方法里面