Activity生命周期

从基础开始,一点一滴,慢慢积累!Activity生命周期一说大家可能都知道,也都是常用的。但是长时间不看的情况下 ,对于老司机来说可能还会忘记。这里做个笔记时刻提醒自己,也希望给初学者一些指引。

  1. 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生命周期流程就需要自己去组合体验。实践是检验真理的唯一标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值