1.1、正常情况下,没有用户参与的情况,Activity的生命周期的改变
(1)onCreate:标识Activity正在创建,是生命周期的第一个方法,这里可以做界面布局的资源加载、初始化Activity的所需数据,控件的一些事件等
(2)onRestart:表示Activity正在重新启动。一般由Activity从不可见到可见状态时,会调用。比如切换到其它界面,或者通过Home键切换到桌面,当前Activity会被暂停,同时,OnPause和onStop被调用。然后紧接着又切换回这个Activity,则出现这种情况。
(3)onStart:表示Activity正在被启动,这是Activity可见,但还没有显示在前台,无法进行用户交互,可以理解为在后台。
(4)onResume:Activity已经可见,已经显示在前台,并开始活动。
(5)onPuase:表示Activity正在停止,正常情况下,onStop会被调用,可做一些非耗时的保存数据操作。
(6)onStop:Activity即将停止,可以做一些稍微重量将的回收工作,不能太耗时。
(7)onDestroy:Activity即将被销毁,这是最后一个生命周期,这里可以做最终的回收工作和资源释放。
完整生命周期切换过程如图:
1.2、异常情况下,Activity被系统收回或者当前设备Configuration发生改变导致Activity被销毁重建
1、资源相关的系统配置发生改变,导致Activity被杀死或者重新创建
举例说明:当我们的手机横竖屏切换时,Activity会被销毁并重新创建,通过onSaveInstanceState和onRestoreInstanceState方法做数据的保存和恢复,如下图,当然也可以阻止系统重新创建Activity。
2、资源内存不足导致低优先级的Activity被销毁
三类Activity优先等级:高—低
(1)前台Activity—正在用户交互的Activity,优先级最高
(2)可见但非前台Activity—例如弹窗,导致Activity可见,但在后台无法和用户交互
(3)后台Activity—已经被暂停的Activity,如调用了onstop,优先级最低
所以当系统内存不足的情况下,后台Activity是最容易被杀死的,同样通过onSaveInstanceState和onRestoreInstanceState方法做数据的保存和恢复,如果一个后台工作,没有进行四大组件的执行,很容易被杀死,较好的方法就是放在Service中进行,保证进程具有一定优先级,不容易被系统杀死。
当然也可以指定Activity的configChanges属性,如果要指定多个属性,用”|“连接
android:configChanges="orientation|keyboardHidden"
特别声明:内容总结来源《Android开发艺术探索》,仅记录学习,如有侵权或不对之处,还请告知,定当删除或改正。