参考: 《第一行代码:Android》 郭霖(著)

Activity所在的栈为后进先出(Last In First Out)结构。

Activity状态

  1. 运行状态(S1):

    • 该Activity处于与User交互的状态,即是位于栈顶的Activity。

    • 系统一般不考虑回收该处内存。

  2. 暂停状态(S2):

    • Activity不再处于栈顶(Another activity comes in front of the activity),但仍然是可见的。

    • 系统只有在内存极低时才考虑回收内存。

  3. 停止状态(S3):

    • Activity不处于栈顶&完全不可见(The activity is no longer visible)。

    • 系统会保存该Activity相应的状态和变量,但内存被回收的几率增大,即不能保证该Activity没有被回收。(Process is killed)

  4. 销毁状态(S4):

    • Activity从栈中被移除(调用finish()或点击Back键)。

    • 重点回收该状态下的Activity占用的内存。

Activity生存期

  1. onCreate()

    • Activity被创建时调用,完成各种初始化操作。

  2. onStart()

    • Activity由不可见(invisible)变为可见(invisible)时调用。

  3. onResume()

    • Activity准备好与User交互时调用,此时activity一定位于栈顶(S1).

  4. onPause()

    • 调用了其他Activity(不再位于栈顶),关键数据会被保存,但仍处于可见状态(visible, S2).

  5. onStop()

    • Activity变为不可见(invisible)时调用(S3)。

  6. onDestroy()

    • Activity被销毁前调用(S4)。

  7. onRestart()

    • Activity由停止状态变为运行状态前调用(S3→S1,即不可见→可见)。

    • 由于onStop()时Activity的内存可能已经被回收,所以在调用onStart()变为可见前要调用onRestart()作准备。

补充

  • 除了onRestart()外,其余生存期为一一对应关系

  • onCreate() vs onDestroy()

  • onStart() vs onStop()

  • onResume vs onPause()

更多相关文章

  1. android LruCache 有效避免程序OOM
  2. Android(安卓)Boot Loader
  3. android adb 向模拟器上传文件
  4. android 蓝牙 获取蓝牙地址名字
  5. Android修改状态栏颜色全方位教程
  6. android 内存分析(MAT工具的使用)
  7. Android网络访问与数据解析
  8. android 打印工具类
  9. Android(安卓)ViewPager Adapter 内存管理的坑

随机推荐

  1. android - layerlist层叠样式
  2. Android(安卓)5.1 API 22 所有sdk文件下
  3. android studio 55线程更新UI handler
  4. Android5.0 SDK 相关资源下载地址
  5. android将控件设置为透明色
  6. android使用xml布局文件设计提示对话框
  7. Android(安卓)Lint常见问题分析(for stud
  8. Android(安卓)UI设计技巧总结归纳
  9. android radiogroup样式(设置切换背景与文
  10. android https之三