1-1.1 Activity的生命周期之图记表查

生命周期

Activity生命周期.jpg
方法 调用时机 说明
onCreate 在Activity第一次被创建时 在此完成各种初始化操作
onStart 在Activity即将可见时
onResume 在Activity准备好与用户交互
onPause 在用户跳转另一个Activity或可见但不可交互时 此处不能进行一些耗时操作,因为会影响新Activity的显示
onStop 在Activity完全不可见时
onDestory 在Activity被销毁之前 在此进行一些回收工作和资源释放
onRestart 在活动被重新启动时
onNewIntent 跳转自身 当Activity启动模式不为standard时存在复用可能
onSaveInstanceState 在onStop之前调用
onRestoreInstanceState 在Activity被异常结束时的条件下,在onResume前调用 Activity被异常结束时,该方法会被执行,用于取出在onSaveInstanceState中存储的数据

常见执行

情形ActivityA,B A,B执行顺序
第一次启动ActivityA onCreate(A)>onStart(A)>onResume(A)
复用启动ActivityA onNewIntent(A)>onResume(A)
ActivityA启动B onPause(A)>onCreate(B)>onStart(B)>onResume(B)>onStop(A) 若B为透明使得A仍然可见则onStop(A)将不执行
ActiviyB返回A onPause(B)>onRestart(A)>onStart(A)>onResume(A)>onStop(B)>onDestory(B)
ActivityA在异常结束后启动 onCreate(A)>onStart>(A)>onRestoreInstanceState(A)>onResume(A)
...

补充说明

  • Activity的onDestory方法执行可以通过判断此时的Activity是压栈还是出栈来判断,跳转新Activity时旧Activity从栈顶被压入栈中,此时仍存在被复用可能因此不会执行onDestory方法,但返回上一个Activity则是将Activity从栈顶移除栈,此时Activity进入销毁状态,则会执行onDestory方法
  • onSaveInstanceState 方法会在onStop之前调用且每次都执行,而onRestoreInstanceState方法则有Activity异常结束的条件才会执行,在这里我理解为Activity的销毁存在不确定性,例如跳转新Activity时,旧Activity会执行到onstop方法,此时应用切换横竖屏再返回,如果不是onSaveInstanceState 每次都执行则会遗失数据。
  • onSaveInstanceState 数据通过bundle来保存,取用则可以在onCreate与onRestoreInstanceState 中取得,但onCreate中需要判空来确认是第一次创建还是重建
  • Activity异常结束的情况
    • 配置被改变
      • 常用配置 orentation(屏幕方向)、screenSize(屏幕尺寸)、locale(系统语言环境)...
      • 避免重启
        在Activity的清单文件中声明android:configChanges属性,之后在对应Activity发生配置改变时直接调用onConfigurationChanged方法。
    • 系统内存不足,低优先级的Activity被回收
      优先级:前台正在交互>可见但不可交互>后台Activity

你可能感兴趣的:(1-1.1 Activity的生命周期之图记表查)