Activity是整个Android app直接与用户交互的核心组件。作为四大组件中出现频率最高的组件,我们在Android的各个地方都能看到它的影子。Activity中文直接翻译为"活动",其实翻译成"界面"更好理解。正常情况下,除了Window、Dialog和Toast,我们能看到的界面的确只有Activity。
深入了解Activity的工作模式、生命周期与管理模式,是了解Android系统的基础,也是开发过程中必备的基本技能。
一.生命周期
谷歌给了我们一张图来表示Activity的生命周期,他希望Activity能被开发者所控制,而不是一匹脱缰的野马。下图是最经典的,也是我们最常见的:
(一)生命周期中各个方法的含义和作用
(1)onCreate():create表示创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法.它本身的作用是进行Activity的一些初始化工作,比如使用setContentView加载布局,对一些控件和变量进行初始化等.但也有很多人将很多与初始化无关的代码放在这,其实这是不规范的.此时Activity还在后台。不可见,所以动画不应该在这里初始化,因为看不到……
(2)onStart():start表示启动,这是Activity生命周期的第二个方法.此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。其实将Activity的初始化工作放在这也没有什么问题,放在onCreate中是由于官方推荐的以及我们开发的习惯。
(3)onResume():resume表示继续、重新开始,这名字和它的职责也相同。此时Activity经过前两个阶段的初始化已经蓄势待发。Activity在这个阶段已经出现在前台并且可见了。这个阶段可以打开独占设备。
(4)onPause():pause表示暂停,当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。此时Activity在前台并可见,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动,而且android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity。从生命周期图中发现可以在这快速重启,但这种情况其实很罕见,比如用户切到下一个Activity的途中按back键快速得切回来。
(5)onStop():stop表示停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。
(6)onDestroy():destroy表示毁灭,这个阶段Activity被销毁,不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。