在Android应用程序运行时,Activity的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着应用程序之间的切换、关闭等,每个Activity都有可能从活动状态转入非活动状态,当然,也可以从非活动状态转入活动状态。

下面,我们借助一个关于Activity生命周期模型图进行理解。

从图中可以看出来,在Activity的生命周期中,会有如下方法会被系统回调:

  1. void onCreate(Bundle savedInstanceState):创建Activity时会被回调。
  2. void onStart():首次创建Activity时在onCreate方法之后执行,但会有另外一种情况,后面会进行分析,总之,就是启动Activity时被回调。
  3. void onRestart():该活动在Activity没有被销毁时会一直存在Activity栈中,重新启动Activity时会被回调。
  4. void onResume():用户在进行Activity切换时,恢复相应的Activity时回调。在void onStart()方法后一定会回调的方法。
  5. void onPause():Activity被暂停时回调,活动会被压倒栈中。
  6. void onStop():Activity被停止时回调。
  7. void onDestroy():Activity被销毁时回调,完全从系统内存中移除。

总结归纳起来,Activity会有四种状态:

  • 运行状态:当前Activity位于前台,用户可见,可以获得焦点。
  • 暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
  • 停止状态:该Activity不可见,失去焦点。
  • 销毁状态:该Activity结束,或Activity所在的进程被结束。

我通过程序测试得出Activity的7个方法会在何时进行回调。

  • 当前程序入口为该Activity,当程序启动时将会自动启动并执行该Activity,会回调onCreate()、onStart()、onResume()三个方法回调,如图

  • 当切换到程序的另外一个Activity时,MainActivity不能再获取焦点,但依然可见,此时该Activity进入“暂停”状态,会回调onPause()方法,如图

  • 当返回从另外一个Activity返回到MainActivity时,该Activity会再次进入“运行”状态,会回调onStop()、onRestart()、onStart()、onResume()方法,如图

  • 当直接按下home键返回系统桌面时,当前该Activity失去焦点,但并未销毁,只是进入“停止”状态,会回调onPause()、onStop()方法,如图

  • 当再次从系统桌面进入程序时,会回调onRestart()、onStart()方法,如图

  • 当直接退出程序时,会回调onPause()、onStop()、onDestroy()方法,如图

由以上实验得onCreate和onDestroy该方法在周期中只会被调用一次。

最新文章

  1. iOS Swift-简单值(The Swift Programming Language)
  2. VS2010 使用WebService
  3. mORMot 数据库操作
  4. ubuntu + subversion + apache2 设置
  5. JS的prototype的共享机制分析
  6. .htaccess文件 使用
  7. 百度前端笔试题目--css 实现一个带尖角的正方形
  8. (原)torch的apply函数
  9. [bzoj4240] 有趣的家庭菜园
  10. Spring Boot 的 10 个核心模块
  11. C166 -MDH
  12. bootstrap3文章
  13. socket粗解
  14. 「Vue」自定义指令
  15. TradingView 自定义指标
  16. Android中利用ant进行多渠道循环批量打包
  17. 用TTTAttributedLabel创建变化丰富的UILabel
  18. js迪杰斯特拉算法求最短路径
  19. Java的Timer定时器
  20. MySQL 一些让人容易忽视的知识点

热门文章

  1. kaldi使用cvte模型进行语音识别
  2. js初学者循环经典题目
  3. 算法<初级> - 第二章 队列、栈、哈希表相关问题
  4. Kafka常用操作备忘
  5. Spark执行流程(转)
  6. mybatis-spring 启动过程和调用过程
  7. Unity调用Android相册
  8. CSPS模拟 88
  9. .NET Core 3.0 部署在docker上运行
  10. 8.3 NOIP CE反思