美文网首页
Activity的生命周期和启动模式

Activity的生命周期和启动模式

作者: 伯纳乌大王 | 来源:发表于2017-07-25 18:22 被阅读3次

    重点:生命周期和启动模式以及IntentFilter的匹配规则分析。

    正常情况下Activity的生命周期分析


    onCreate:    Activity正在被创建,一些初始化的操作,如setContentView去加载界面布局资源、初始化Activity里面所需数据等。

    onRestart:   Activity正在重新启动。当前Activity从不可见状态变为可见状态时,onRestart就会被调用。

    onStart:       Activity正在被启动,这时Activty已经可见了,但没有出现在前台,无法和用户交互。

    onResume: Activity已经可见了,并且出现在前台开始活动。

    onPause:     Activity正在停止,可做一些存储数据、停止动画的操作,但不能太耗时。结束之后,新的Activity的onResume才会执行。

    onStop:      Activity即将停止,可做一些稍微重量级的回收工作,亦不能太耗时。

    onDestory: Activity即将被销毁,Activity的最后一个回调,可做一些回收工作和最终资源的释放。

    问题探究

    onCreate和onDextory配对   -------------->标识着Activity的创建和销毁,并且可能只有一次调用

    onStart和onStop配对         -------------->标识Activity的可见,可能调用多次

    onResume和onPause配对   ------------->标识Activity在前台,可能调用多次

    onStart和onStop与onResume和onPause只有意义的区分,从是否可见和是否显示在前台来回调的,在实际使用中没有其他明显区别

    异常情况下Activity的生命周期分析

    Activity ------意外情况---->onSaveInstanceState------->onDestory

    重新创建后

    Activity------->onCreate---------->onRestoreInstanceState

    Aciivity异常结束后,系统会调用onSaveInstanceState保存当前Activity状态(onStop之前),实际上就是一个Bundle对象。Activity重新创建之后,系统调用onRestoreInstanceState,并把保存的bundle对象传递给它和onCreate。因此,可以通过onRestoreInstanceState和onCreate判断当前Activity是否被创建了,则可以取出bundle并恢复,onRestoreInstanceState在onStart之后调用。

    其次,系统会自动做一些回复工作,默认保存当前Activity的视图结构,并在activity重启之后进行恢复。View层次结构的工作流程:

    Activity被意外终止,Activity调用onSaveInstanceState去保存数据,委托Window去保存数据,接着Window委托上面的顶级容器保存数据(ViewGroup),一般很可能是DecorView,顶层容器通知它的子元素保存数据,保存完毕。这是一种典型的委托思想,上层委托下层,父容器委托子元素。

    如果不想让异常的Activity启动则可以指定configChanges属性,orientation,则就不会调用onSaveInstanceState和onRestoreInstanceState来储存和恢复数据,而取而代之的调用了Activity的onConfigurationChanged(),可以做一些特殊处理。

    相关文章

      网友评论

          本文标题:Activity的生命周期和启动模式

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