美文网首页
2018-07-26 Activity(活动) 的生命周期

2018-07-26 Activity(活动) 的生命周期

作者: 灼灼其华_b157 | 来源:发表于2018-07-26 19:56 被阅读0次

    一.返回栈

    Android中是使用Task(任务)来管理活动的,一个任务就是一组存放在栈里面的集合,这个栈就称为返回栈,

    又栈是一种后进先出的数据结构,每当启动一个新活动的时候,都会进入返回栈的栈顶,而当我们按下Back键或者调用finish()方法销毁活动时,处于栈顶的元素会先出栈,之前进入的活动就会处于栈顶位置,系统总是将处于栈顶的活动展示给用户

    二.活动状态

    每个活动在其生命周期中最多可能会有四种状态

    1.运行状态:当一个活动处于栈顶位置时,这个活动就处于运行状态

    2.暂停状态:当一个活动不再处于栈顶位置,但任然可见,这个活动就进入了暂停状态,但是活动都不在栈顶了,为什么任然可见呢?因为并不是每个活动都要占据整个屏幕,比如对话框形式的活动只会占据屏幕的一部分,处于暂停状态的活动任然是完全存活的,系统不会愿意去回收这类活动

    3.停止状态:当一个活动不处于栈顶位置且不可见时,这个活动就处于暂停状态,系统任然会为这种活动保存相应的状态和成员变量,但是这是不可靠的,当其他地方需要内存时,处于暂停状态的活动有可能被系统回收

    4.销毁状态:活动从返回栈中移除后就变成了销毁状态,系统会回收销毁状态的活动,以保证内存的充足

    二,活动的生存期

    Activity类中定义了七个回调方法,覆盖了活动生命周期的每一个环节

    1.onCreate() :每个活动我们都重写了onCreate() 这个方法,他会在活动第一次创建的时候被调用,我们应该在这个方法中完成初始化,加载布局一类的操作

    2.onStart() :这个方法在活动由不可见变为可见时候调用

    3.onResume() :这个方法在活动准备和用户进行交互的时候调用,此时活动一定处于返回栈的栈顶,且处于运行状态

    4.onPause() :当另一个方法启动时调用

    5.onStop() :活动完全不可见时调用

    6.onDestroy() :这个方法在活动被销毁前调用,之后活动的状态变为销毁状态

    7.onRestart() :这个方法在活动由停止状态(onStop)重新变为运行状态时调用,也就是活动被重新启动了

    活动生命周期图

    实例来解释各个方法的用途

    首先创建一个ActivityLifeCycle项目,主活动和布局分别为MianActivity和activity_main.xml

    MainActivity MainActivity

    再创建两个子活动,分别为NormalAvtivity和DialogActivity(对话框形式),在main_activity里定义两个按钮用于对另外两个活动的跳转

    activity_normal布局文件 activity_dialog布局文件 配置对话框主题

    配置对话框时报错,把DialogActivity的父类继承改为Activity而不是AppCompatActivity

    再刚创建主活动且执行的时候

    onCreate(),onStart(),onResume()三个方法均会执行,当点击第一个按钮到NormalActiivty时,由于NormalActiivty会把MainActivity完全遮挡住,因此onPause() , onStop()方法都会执行,然后按下Back键返回主活动,onRestart(),onStart,onResume() 三个方法会重新执行,而onCreate()方法不会再执行了,因为活动并没有再次创建

    再点击第二个按钮,启动DialogActivity(对话框活动),回执行onPause()方法,onStop()方法并没有执行,因为DialogActivity活动没有完全遮住主活动,再按Back键返回主活动也只有Resume()方法执行,再按Back键退出主活动,会依次执行onPause(),onStop(),onDestroy()方法,最终销毁MainActivity

    其实可以理解为onPause()暂停 和 onResume() 继续 是一对 ,onStop()停止 和onRestart() 重新开始是一对,在有别的活动启动之后和按Back返回之后都会执行对应的方法

    相关文章

      网友评论

          本文标题:2018-07-26 Activity(活动) 的生命周期

          本文链接:https://www.haomeiwen.com/subject/rfximftx.html