基础介绍
Activity生命周期
正常情况启动
onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()。
首先我们来介绍一下这些生命周期分别代表了什么
1.onCreate():当Activity第一次被创建时会被调用,一般在里面做一些初始化的工作,此外,onCreate()会带有一个Bundle参数,可以借助此Bundle对象来恢复部分异常情况下的数据。
2.onRestart():表示Activity正在重新启动,当Activity从不可见变为可见时,会被调用,
3.onStart():表示activity正在被启动,但是还没有出现在前台,无法交互,可理解为,此时Activity已经显示,但是用户无法看到
4.onResume():表示Activity已经可见了,并且出现在前台并开始活动。需要和onStart()对比,onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。
5.onPause():表示 Activity正在停止,仍可见,onPause中不能进行耗时操作,会影响到新Activity的显示。因为onPause必须执行完,新的Activity的onResume才会执行。
6.onStop():表示Activity即将停止,不可见,位于后台。
7.onDestory():表示Activity即将销毁,这是Activity生命周期的最后一个回调,可以做一些回收工作和最终的资源回收。
特殊情况下的生命周期
1.资源相关的系统配置发生改变导致的Activity被杀死重新创建 如:横竖屏切换
在Activity在异常情况下终止时,系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法的调用在onStop之前,但是和onPause没有固定的时序关系,在恢复时,会调用onRestoreInstanceState,调用时机在onStart之后。
横竖屏切换的生命周期:onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState->onResume()
2.资源内存不足导致优先级低的Activity被杀死
优先级:前台Activity>可见非前台Activity>后台不可见Activity
网友评论