Android艺术|Activity的生命周期

《Android开发艺术探索》系列笔记

Activity生命周期(典型情况)
在这里插入图片描述
onCreate():
Activity 正在创建
初始化,如setContentView界面资源、初始化数据

onStart():
正在启动,可见但不在前台,无法和用户交互。

onResume():
获得焦点,可见且在前台并开始活动。

onPause():
正在停止,可做数据存储、停止动画等操作。

onStop():
即将停止,可做稍微重量级回收工作,如取消网络连接、注销广播接收器等。

onDestroy():
即将销毁,做回收工作、资源释放。

onRestart():
重新启动,Activity由后台切换到前台,由不可见到可见。
启动一个Activity:
onCreate()–>onStart()–>onResume()
打开另一个Activity:
旧Activity的onPause() -->新Activity的onCreate()–>onStart()–>onResume()–>旧Activity的onStop()
返回到旧Activity:
新Activity的onPause()–>旧Activity的onRestart()–>onStart()–>onResume()–>新Activity的onStop()–>onDestory();

Activity生命周期(异常情况)

  1. 异常情况下Activity 重建,非用户主动去销毁

    由于资源相关配置发生改变,导致Activity被杀死和重新创建
    如:旋转屏幕
    onSaveInstanceState和onRestoreInstanceState
    onSaveInstanceState(Activity即将被销毁并且有机会重新显示的情况下才会去调用它)
    系统异常终止时,调用onSavaInstanceState来保存状态。该方法调用在onStop之前,但和onPause没有时序关系。
    调用onRestoreInstanceState(该方法在onStart之后),并将onSavaInstanceState保存的Bundle对象作为参数传到onRestoreInstanceState与onCreate方法。
    在这里插入图片描述
    如果不想让Activity在旋转屏幕的时候重新创建,则可以在configChanges属性中添加orientation:
    在这里插入图片描述
    系统配置中所含的项目是非常多的,常用的有locale、orientation和keyboardHidden

  2. 由于系统资源不足,导致优先级低的Activity被回收
    优先级:
    前台可见Activity(正在交互)>前台可见不可交互Activity(比如弹出对话框) >后台
    如果一个进程没有四大组件在执行,那么这个进程将很快被系统杀死。(可以将后台工作放入Service中从而保证进程有一定的优先级)

猜你喜欢

转载自blog.csdn.net/LJY_Qt/article/details/89228345
今日推荐