Activity 生命周期

.本文将对 Activity 的生命周期相关的进行一些总结 : 


Activity 是由 TaskStack 进行管理,当一个应用启动时,系统会为其创建一个对应的 TaskStack,当新的Activity 被打开,就被压入栈顶,此时前一个 Activity位于当前 Activity 的底部。只有位于栈顶的 Activity 才会被显示到窗口中。


Activity 界面的 4 种状态 : 

运行状态 : 可见同时可以操作

暂停状态 : 可见但是不可操作

停止状态 : 不可见,但其对象存在

死亡状态 : 对象不存在


Activity 生命周期的流程图 : 


重点关注以下三个方法

onCreate() : 用于加载布局和初始化工作

onResume() : 经历此方法,才能进入运行状态

onDestory() : 在对象死亡之前,做一些收尾清理工作


Activity 生命周期方法的调用(使用Log打印日志) : 

1). 开始运行 (或从停止到开始) : 

E/TAG: MainActivity()
E/TAG: onCreate
E/TAG: onStart
E/TAG: onResume
2). 运行 --> 死亡

E/TAG: onPause
E/TAG: onStop
E/TAG: onDestory
3). 运行 --> 停止

E/TAG: onPause
E/TAG: onStop
4). 停止 --> 运行

E/TAG: onRestart
E/TAG: onStart 
E/TAG: onResume


5). 运行 --> 暂停

E/TAG: onPause

6). 暂停 --> 运行

E/TAG: onResume


以下对 Activity 生命周期方法的调用进行测试(通过使用Log打印日志进行测试) : 


1. A 页面跳转到 B 页面,点击返回,此过程的生命周期 : 


1.1 B 页面完全覆盖 A 页面


A 跳转 B 的生命周期方法执行顺序 : 

onPause(A) --> onCreate(B) --> onStart(B) --> onResume(B) --> onStop(A)


B 页面点击返回的生命周期执行顺序  : 

onPause(B) --> onRestart(A) --> onStart(A) --> onResume(A) --> onStop(B) --> onDestroy(B)


1.2 B 页面不完全覆盖 A 页面


A 跳转 B 的生命周期方法执行顺序 : 

onPause(A) --> onCreate(B) --> onStart(B) --> onResume(B)


B 页面点击返回的生命周期执行顺序  : 

onPause(B) --> onResume(A) --> onStop(B) --> onDestroy(B)




2. 横竖屏切换过程的生命周期 : 


横竖屏切换会导致生命周期方法的重新执行 : 

onPause()--> onStop() --> onDestroy() --> onRestart() --> onStart() --> onResume()



如何屏蔽这种重新执行?

找到 Manifest.xml , 在想屏蔽的已注册的 Activity 中加上 android:configChanges="keyboardHidden|screenSize|orientation"。

这个属性的参数可以自行指定。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值