activity的生命周期(总结)

activity是安卓的四大组件之一,这篇文章带你们一块儿总结生命周期的各个方法。我没有贴一些打印log的代码,你们能够本身去尝试,看看这个总结是否正确,若是错误,提交评论便可。android

经典的生命周期流程图


每次看到这个图的时候,相信很多朋友对Activity的生命周期都比较清晰,可是若是没有图,让你描述,你能很好的组织语音,有结构的描述清楚吗?

个人总结

  • 一、打开一个全新的activityA:oncreat-----onstart---onresume
  • 二、从activityA——activityB(全屏):activityA先执行onpause,而后activityA执行oncreat-----onstart---onresume,activityA在执行onstop
  • 三、从activityA——activityB(非全屏):activityA先执行onpause,而后activityA执行oncreat-----onstart---onresume,activityA不会执行onstop
  • 四、activityB(全屏)返回到activityA:activityB先执行onpause,activityA: onRestart -> onStart ->onResume,activityB在执行onstop——onDestory;
  • 五、activityB(非全屏)返回到activityA:activityB先执行onpause,activityA:onResume,activityB在执行onstop——onDestory;
  • 六、activityB返回到activityA:若是activityA已经被销毁,activityA会从新建立,执行oncreat-----onstart---onresume,activityB的流程不变
  • 7、activityA按home键退居后台:同2的流程,从home返回到activityA,同4的流程;函数

    一些特殊的方法

    onWindowFocusChanged
    在Activity窗口得到或失去焦点时被调用而且当Activity被建立时是在onResume以后被调用,当Activity被覆盖或者退居后台或者当前Activity退出时,它是在onPause以后被调用(在这个方法中能够view已经绘制完成,能够获取view的宽高等属性cdn

    onSaveInstanceState
    (1)在Activity被覆盖或退居后台以后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其余Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种状况咱们没法保证何时发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,而后再重建一个新的,调用此方法时,咱们能够保存一些临时数据;第三种状况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onstop以前。(android3.0以前:在onPause以前调用,在3.0以后,在onPause以后调用blog

    onRestoreInstanceState:
    有的人说这个方法和onSaveInstanceState是一对,其实否则,(1)在Activity被覆盖或退居后台以后,系统资源不足将其杀死,而后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程当中,此方法会被调用。咱们能够重写此方法,以即可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart以后。(在当前Activity跳转到其余Activity或者按Home键回到主屏,自身退居后台时:onRestoreInstanceState不会调用,可是onSaveInstanceState会调用,这里就是区别生命周期

    最后的总结

    当Activity被系统撤销后从新创建时,保存以及恢复数据的函数调用顺序是:onSaveInstanceState(保存数据)-->onCreate(恢复数据allstate)-->onRestoryInstanceState(恢复数据HierarchyState)。资源

    若是要取消切换屏幕方法重建activity,能够配置configChanges属性:
    android:configChanges="keyboardHidden|orientation|screenSize(当支持的最小sdk版本大于android4.0须要设置这个属性)"it

相关文章
相关标签/搜索