zoukankan      html  css  js  c++  java
  • Android:Activity生命周期

     
     
     
    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()
     
     
  • 相关阅读:
    Linux Shell的18条常用命令整理
    git branch 命令查看分支、删除远程分支、本地分支
    比Xshel更好用的 FinalShell
    Centos7的目录结构
    准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
    代码托管仓库之码云
    包管理工具之Pipenv
    Python的垃圾回收机制
    Django之Models操作
    Python操作数据库实战
  • 原文地址:https://www.cnblogs.com/lawrencechen/p/4825094.html
Copyright © 2011-2022 走看看