零、学习目标
- 了解Activity的七个生命周期回调方法
- 理解Activity回调方法什么时候被触发
- 会使用Log类的方法输出各类调试信息
- 知道Activity有四种启动模式
一、Activity生命周期
1、了解Activity生命周期
当用户浏览、退出和返回到您的应用时,您应用中的 Activity 实例会在其生命周期的不同状态间转换。Activity 类会提供许多回调,这些回调会让 Activity 知晓某个状态已经更改:系统正在创建、停止或恢复某个 Activity,或者正在销毁该 Activity 所在的进程。
在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式。例如,如果您正构建流媒体视频播放器,当用户切换至另一应用时,您可能要暂停视频或终止网络连接。当用户返回时,您可以重新连接网络并允许用户从同一位置继续播放视频。换言之,每个回调都支持您执行适合给定状态变更的特定作业。在合适的时间执行正确的作业,并妥善处理转换,这将提升应用的稳健性和性能。例如,良好的生命周期回调实现有助于防止应用出现以下问题:
- 当用户在使用应用时接听来电,或切换至另一应用时崩溃。
- 当用户未主动使用它时,消耗宝贵的系统资源。
- 当用户离开应用并在稍后返回时,丢失用户的进度。
- 当屏幕在横向和纵向之间旋转时,崩溃或丢失用户的进度。
2、Activity生命周期简化图
为了在Activity生命周期各个阶段之间导航转换,Activity类提供六个核心回调方法:onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy()。当 Activity 进入新状态时,系统会调用其中每个回调方法。
(1)Activity存在与否
- Activity整个生命周期从
onCreate()
方法开始,到最终调用onDestroy()
方法结束。对于Activity的全局资源在onCreate()
方法中设置,最终在onDestroy()
方法中进行资源回收。
2)Activity可见与否
- Activity触发
onStart()
方法后处于可见状态,但未必能与用户进行交互。当Activity完全不可见时,触发onStop()方法。重新可见时,先触发onRestart()
方法,再触发onStart()
方法。onStart()
方法和onStop()
方法可以被多次调用。
(3)Activity可交互与否
Activity在onResume()
方法和onPause()
方法之间时处于活动状态,此时可以与用户进行交互
3、Android进程优先级
应用程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android从启动到停止的全过程。Android应用程序的生命周期的终结这个动作并非由应用程序进程本身执行,而是取决于Android系统。那么,系统是根据一个怎样的重要性标准来终止Android应用程序呢?Android根据应用程序的组件以及组件当前运行状态将所有的进程按重要性程度从高到低划分为五个
二、Activity生命周期回调方法
(一)回调方法概述
1、onCreate()回调方法
系统首次创建 Activity 时触发,同时还以Bundle形式存储以前的状态。
2、onRestart()回调方法
重新启动Activity调用,该Activity在堆栈中,而不是创建一个新Activity。
3、onStart()回调方法
当 Activity 进入“已开始”状态时,系统会调用此回调。调用onStart()方法使Activity对用户可见,因为应用会为 Activity 进入前台并支持互动做准备。
4、onResume()回调方法
Activity 会在进入“已恢复”状态时来到前台,然后系统调用 onResume() 回调。这是应用与用户互动的状态。应用会一直保持这种状态,直到某些事件发生,让焦点远离应用。
5、onPause()回调方法
Activity被暂停。该方法是用来保存活动状态的地方,以便Activity被重新启动时具有与其退出相同的状态。
6、onStop()回调方法
当Activity不再对用户可见,说明其已进入“已停止”状态,因此系统将调用onStop()回调。
7、onDestroy()回调方法
销毁Ativity之前,系统会先调用onDestroy()。onDestroy()回调应释放先前的回调(例如onStop())尚未释放的所有资源。