从基础开始,一点一滴,慢慢积累!Activity生命周期一说大家可能都知道,也都是常用的。但是长时间不看的情况下 ,对于老司机来说可能还会忘记。这里做个笔记时刻提醒自己,也希望给初学者一些指引。
- Activity启动生命周期:onCreate()——>onStart()——>onResume() 下面是运行结果
06-13 12:21:47.925 4105-4105/test.zw.com.androidtest D/TestActivity: onCreate
06-13 12:21:47.927 4105-4105/test.zw.com.androidtest D/TestActivity: onStart
06-13 12:21:47.930 4105-4105/test.zw.com.androidtest D/TestActivity: onResume
2.按下Home键时Activity生命周期:onPause()——>onStop() 按下Home键时回到系统主界面,顶部Activity会执行暂停和停止,下面是运行结果
06-13 12:31:02.267 4105-4105/test.zw.com.androidtest D/TestActivity: onPause
06-13 12:31:02.283 4105-4105/test.zw.com.androidtest D/TestActivity: onStop
3.从系统主界面再次进入应用:onRestart()——>onStart()——>onResume() 再次进入应用,Activity没有被回收的情况下会不会重新创建栈顶Activity,只会重新启动,运行结果
06-13 12:41:37.708 4105-4105/test.zw.com.androidtest D/TestActivity: onRestart
06-13 12:41:37.709 4105-4105/test.zw.com.androidtest D/TestActivity: onStart
06-13 12:41:37.710 4105-4105/test.zw.com.androidtest D/TestActivity: onResume
4.返回上一级Activity:onPause()——>onStop()——>onDestroy() 返回上一级Activity本Activity会顺序执行暂停、停止、销毁,运行结果
06-13 12:52:51.984 4105-4105/test.zw.com.androidtest D/TestActivity: onPause
06-13 12:52:52.420 4105-4105/test.zw.com.androidtest D/TestActivity: onStop
06-13 12:52:52.421 4105-4105/test.zw.com.androidtest D/TestActivity: onDestroy
5 . 横竖屏切换:onPause()——>onStop()——>onDestroy()——>onCreate()——>onStart()——>onResum() 切换横竖屏时,如果没有在manifast中设置configChanges,Activity会销毁重新创建一遍。运行结果
06-14 19:30:19.710 14875-14875/test.zw.com.androidtest D/TestActivity: onPause
06-14 19:30:19.713 14875-14875/test.zw.com.androidtest D/TestActivity: onStop
06-14 19:30:19.714 14875-14875/test.zw.com.androidtestD/TestActivity: onDestroy
06-14 19:30:19.783 14875-14875/test.zw.com.androidtest D/TestActivity: onCreate
06-14 19:30:19.784 14875-14875/test.zw.com.androidtest D/TestActivity: onStart
06-14 19:30:19.791 14875-14875/test.zw.com.androidtest D/TestActivity: onResume
6 .横竖屏切换:设置configChages属性参数,横竖屏切换不会重新执行生命周期,而是走onConfigurationChanged方法;设置属性如下(网上很多说设置orientation和keyboardHidden就行了,经验证从4.4版本到7.0都需要设置下面三个属性才行,8.0只需要设置orientation一个参数就可以了。4.4之前版本因为太老了所以就没验证了)
<activity
android:configChanges="orientation|keyboardHidden|screenSize"
android:name=".TestActivity"/>
执行结果:
06-15 12:05:16.348 2889-2889/test.zw.com.androidtest D/TestActivity: onConfigurationChanged
7.Activity异常终结生命周期:Activity异常终结常见的横竖屏切换,内存不足被回收,都会走Activity的onSaveInstanceState方法,这个方法中我们可以保存当前activity中个人想要保存的数据,在重新创建后在onRestoreInstanceState将异常终止时保存的数据取出来。执行结果
D/TestActivity: onPause
D/TestActivity: onSaveInstanceState
D/TestActivity: onStop
D/TestActivity: onDestroy
D/TestActivity: onCreate
D/TestActivity: onStart
D/TestActivity: onRestoreInstanceState
D/TestActivity: onResume
Activity正常进入和退出,异常进入和退出生命周期,大概就这么多。其他跳转多个Activity生命周期流程就需要自己去组合体验。实践是检验真理的唯一标准。