欢迎使用CSDN-markdown编辑器

第一章:Activity 的生命周期和启动模式

1.1 Activity的生命周期

  • onCreate - 构建Activity
  • onRestart - Activity在重启,一般来说Activity恢复时在onStop后执行
  • onStart - Activity开始启动,这时Activity已经可见,但是仍然处于后台状态,所以尽管处于可见状态,用户也看不见,事件也无法响应。
  • onResume - Activity已经启动,并且处于前台状态.用户可见,事件可响应。
  • onPause - Activity正在执行停止 一般情况紧接着会有onStop。注意只有当前onPause函数执行,新Activity才会执行onResume,所以切记不可做耗时处理。
  • onStop - Activity即将停止 ,同样不能太耗时。
  • onDestroy - Activity最后一个生命函数,可以做资源回收。

    总结一下

    • onStart 和 onStop 是一对的他们代表了Activity是否可见
    • onResume 和 onPause 是一对他们表示了Activiry是否在前台/后台

    由上面两个总结我们可以得知两种特别的情况:

    1. 如果新的Activity主题是透明的,那么可以知道旧Activity仍然会显示,所以旧Activity的onStop是不会执行的。
    2. 只有旧Activity退到后台,新Activity才能到前台来,也就是旧的onPause执行完新的才会执行onResume

    异常情况
    当系统配置发生改变或者内存不足时候,系统会异常杀死Activity,每当这时系统都会调用onSaveInstanceState 和 onRestoreInstanceState 这两个函数

    1. onSaveInsatanceState 函数会保存当前Activity的数据,它会在onStop之前调用
    2. onRestoreInstanceState在onStart之后调用

    很多人就会问,系统咋知道我要保存啥数据啊,那么多界面元素,它都知道吗?感觉难以置信!这里我们可以跟一下源码一起来看看。如果不想看代码,可以直接点击跳转查看结论

    Activity.java

    protected void onSaveInstanceState(Bundle outState) {
        outState.putBundle(WINDOW_HIERARCHY_TAG, mWindow.saveHierarchyState());
        ...
    }

    从第二行可以看到,Activity委托了Window去保存,

    结论

欢迎使用CSDN-markdown编辑器_第1张图片

你可能感兴趣的:(Android)