Activity 学习笔记02-生命周期
Posted 双木青橙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity 学习笔记02-生命周期相关的知识,希望对你有一定的参考价值。
Activity 简介
Activity类是android应用的关键组件,而Activity的启动和组合方式则是该平台应用模型的基本组成部分。它是一种可以包含用户界面的组件。
Android Activity 生命周期的状态和事件流程图如下:
Acvitity 生命周期的7个回调函数
一个Activity在其生命周期中会经历多种状态,您可以使用如下7个回调来处理状态之间的转换。具体说明如下:
- onCreate()
此回调必须实现,它会在系统第一次创建您的Activity时触发。应该在此方法中完成Activity的初始化操作,比如加载布局、绑定事件。
onCreate()完成后,下一个回调是onStart() - onStart()
onCreate()退出后,Acvitity将进入“已启动”状态,并对用户可见。此回调包含Activity进入前台与用户进行互动之前的最后准备工作 - onResume
系统会在Activity开始与用户互动之前调用此回调。此时,该Activity位于Activity堆栈的顶部,并且处于活动状态,并会捕获所有用户输入。**应用的大部分核心功能都是在onResume()**方法中实现。onResume()与onPause()是相对应的 - onPause
当Activity失去焦点并进入“Paused”状态时,系统就会调用onPause()。例如,当用户点击【Back】或者【最近使用的应用】按钮时,就会出现此状态。当系统为您的Activity调用onPause()时,从技术上来说,这意味着您的Activity仍然部分可见,但大多数情况下,这表明用户正在离开该Activity。该Activity很快将进入“Stopped”或者“Resumed”状态
如果用户希望界面继续更新,则处于“Stopped”状态的Activity也可以继续更新界面。
注意:不应使用onPause来保存应用或者用户数据、进行网络呼叫或者执行数据库事务。
onPause()执行完毕后,下一个回调为onStop()或者onResume(),具体取决于Activity进入“已暂停”状态后发生的情况 - onStop
当Activity 对用户不再可见时,系统会调用onStop()。出现这种情况的原因可能是Activity被销毁,新的Activity启动,或者现有的Activity正在进入“已恢复”状态并覆盖了已停止的Actiivty。在所有这些情况下,停止的Activity都将完全不再可见。
系统调用的下一个回调将是onRestart()
(如果Activity重新与用户互动)或者onDestory()
(如果Activity彻底终止)。 - onRestart()
当处于“已停止”状态的Activity即将重启时,系统就会调用此回调。onRestart()就会从Activity停止时的状态恢复Activity。此回调的后面总是跟着onStart()。 - onDestroy()
系统会在销毁Activity之前调用此回调。此回调是Activity接收的最后一个回调。通常,实现onDestroy是为了确保销毁Activity或者包含该进程时释放该Activity的所有资源
以上7个方法除了onRestart()方法,其他都是两两相对的,从而可以将Activity分为三个生命周期 - 完整生存期。Activity在onCreate()和onDestroy()方法经历的生存期,一般情况下,Activity会在onCreate()方法中完成各种初始化操作,onDestroy()方法中完成释放内存的操作
- 可见生存期。Activity在onStart()方法和onStop()方法之间所经历的就是可见生存期。Activity对于用户总是可见的,即便有可能无法和用户进行交互
- 前台生存期。Activity在onResume()方法和onPause()方法经历的生存期,Activity总是处于运行状态,此时的Activity是可以和用户进行交互的。
实战
通过建立两个Activity,且将两个Activity的所有生命周期回调都加上打印。执行如下步骤后,验证生命周期的变化,具体如下。
- 从桌面启动应用主Activity 的生命周期变化
- Activity A中Activity B 再通过Back 返回ActivityA 两者生命周期变化
- 在当前页面点击【后台任务】按钮
- 在当前页面点击【Home】按钮
// 启动ActivityA
I/Activity_A: A-------onCreate
I/Activity_A: A-------onStart
I/Activity_A: A-------onResume
// 打开ActivityB
I/Activity_A: A-------onPause
I/Activity_B: B-------onCreate
I/Activity_B: B-------onStart
I/Activity_B: B-------onResume
I/Activity_A: A-------onStop
// 此时位于ActivityB 通过Back回到ActivityA,ActivityB被销毁
I/Activity_B: B-------onPause
I/Activity_A: A-------onRestart
I/Activity_A: A-------onStart
I/Activity_A: A-------onResume
I/Activity_B: B-------onStop
I/Activity_B: B-------onDestroy
// 此时位于ActivityA 点击【后台进程】按钮 再点击测试应用回到当前Activity
I/Activity_A: A-------onPause
I/Activity_A: A-------onStop
I/Activity_A: A-------onRestart
I/Activity_A: A-------onStart
I/Activity_A: A-------onResume
// 此时位于ActivityA 点击键Home, 再点击桌面测试应用图标
I/Activity_A: A-------onPause
I/Activity_A: A-------onStop
I/Activity_A: A-------onRestart
I/Activity_A: A-------onStart
I/Activity_A: A-------onResume
// 此时位于ActivityA,再点击返回Back,则ActivityA被完全销毁,再次启动会重新执行onCreate流程
I/Activity_A: A-------onPause
I/Activity_A: A-------onStop
I/Activity_A: A-------onDestroy
学习参考材料
- android- developers Activity
- 第一行代码-Android (第三版)
以上是关于Activity 学习笔记02-生命周期的主要内容,如果未能解决你的问题,请参考以下文章