您的位置 首页 嵌入式

一文读懂Android Activity生命周期

一文读懂Android Activity生命周期-正常情况下Activity的生命周期: Activity的生命周期大概可以归为三部分 整个的生命周期:onCreate()可以设置所有的“全局”状态, onDestory()可以释放所有的资源 可见的生命周期:onStart()显示给用户的UI数据和资源等, onStop()当不再需要显示时候,可以释放资源 前台的生命周期:该生命周期活跃,onResume()回到前台,onPause()不可见状态或被覆盖 不要在onCreate()方法中执行耗时的操作,onStart()及onResume()不可进行过多操作。

一、正常状况下AcTIvity的生命周期:

AcTIvity的生命周期大约能够归为三部分

整个的生命周期:onCreate()能够设置一切的“大局”状况, onDestory()能够开释一切的资源

可见的生命周期:onStart()显现给用户的UI数据和资源等, onStop()当不再需求显现时分,能够开释资源

前台的生命周期:该生命周期活泼,onResume()回到前台,onPause()不行见状况或被掩盖

不要在onCreate()办法中履行耗时的操作,onStart()及onResume()不行进行过多操作,否则翻开桌面运用图标会卡顿。


(1)onCreate:表明AcTIvity正在被创立。能够调用setContentView加载布局资源、初始化各控件、设置监听、并初始化一些大局的变量。由于在AcTIvity的一次生命周期中,onCreate办法只会履行一次。在Paused和Stopped状况下康复或重启的下,这些控件、监听和大局变量也不会丢掉。即便是内存不足,被收回了,再次Recreate的话,又是一次新的生命周期的开端,又会履行onCreate办法。

(2)onRestart:表明Activity正在从头发动。当处于非栈顶状况的活动需求再次回来栈顶,展示给用户的时分,触发该办法。调用的场景首要有:home键之后,然后切换回来、Activity跳转到另一个Activity之后,按back键回来本来Activity。很少调用,由于它只在onStop之后才或许调用,所以操作放在onStart办法里边就比较好。

(3)onStart:表明Activity正在发动,这时Activity现已可见,可是还没有出现在前台,还无法和用户交互。

(4)onResume:表明Activity现已可见了,而且出现在前台并开端活动。

(5)onPause:表明Activity正在中止,正常状况下,onStop会接着调用,可是翻开的是通明的Activity,不会调用onStop,回来会调用onResume。能够履行一些轻量级的开释作业(耗时会影响到新的Activity显现,onPause有必要履行完,新Activity的生命周期才会履行)例如:中止动画、撤销broadcast receivers等。

(6)onStop:表明Activity即将中止,极有或许被体系所收回,在某些极点状况下,体系或许是直接杀死运用程序的进程,而不是调用onDestory办法,所以咱们需求在onStop办法中尽或许的开释那些用户暂时不需求运用的资源,避免内存走漏。能够做一些略微重量级的收回作业,例如:数据保存,需求用到的数据库操作。

(7)onDestory:表明Activity将被毁掉,确认某些资源是否没有被开释,做一些终究的整理作业,比方在这个Activity的onCreate中敞开的某个线程,那么就要在onDestory中确认它是否完毕了,假如没有,就完毕它。

几种生命周期流程的状况:

(1)现在有两个Activity,A 和B,都重写了一切的生命周期办法。

进入A,回调:AonCreate–>AonStart–>AonResume。回来桌面:AAonPause–>AonStop。

点击按钮进入B,回调:AonPause–>BonCreate–>BonStart–>BonResume–>AonStop。

按下back键,回调:BonPause–>AonRestart–>AonStart–>AonResume–>BonStop–>BonDestory

(2)发动对话框款式的Activity,有两个Activity,A 和B(对话框式Activity)。

从A进入B,回调:AonPause–>BonCreate–>BonStart–>BonResume ,并不会调用onStop。

按下back键,BonPause–>AonRestart–>AonStart–>AonResume–>BonStop–>BonDestory回调:BonPause–>AonResume–>BonStop–>BonDestory。

发动对话框并不会有生命周期的改动,这儿发动的是通明主题的Activity。

二、关于SaveStateInstance

体系配置产生改动后或内存瓶颈时,生命周期产生反常,会调用onSaveInstanceState和onRestoreInstanceState这两兄弟,这就很好的处理Android运用的内存问题。

旋转屏幕时,生命周期大约如下图(若不想,可在清单文件设置android:configChanges="orientation|keyboardHidden|locale"):

onSaveInstanceState:在Activity(onStop之前)被收回之前,体系会调用onSaveInstanceState(Bundle outState)来保存View的状况,并到传入的outState目标中。

onRestoreInstanceState:在Activity被从头创立时,会经过onCreate(Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceState)传入保存的状况信息并康复View的状况。(onCreate首要重建Fragment、onRestoreInstanceState康复Window状况)

View控件的状况被保存需求满意两个条件:

1、View有仅有的ID;
2、View的初始化时要调用setSaveEnabled(true)

View控件康复的留意三点:

1、假如id重复,则View的状况会被掩盖

2、被保存的Fragment会在onCreate中被主动创立和添加到FragmentActivity中

3、被保存的View不会被主动创立,仅仅经过id获取savedInstance用于更新View

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/102087.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部