Activity生命周期
在Android中有4种组件:Activity、Service、Broadcast、Contentprovider。其中Activity是状态最多、最复杂的组件,也是最应当了解清楚的组件。
Activity的生命周期如图:
图1
图2
由图可以看出Activity的状态包括:Create、Start、Resume、Pause、Stop、Destroy状态。图2可能更能理解1个Activity从启动到灭亡的全部进程,基本上是从创建(onCreate)->开始(onStart)->展现(onResume)->暂停(onPause)->停止(onStop)->烧毁(onDestroy)的进程。
如何正确理解各自状态的变化,我们可以采取不同分类进行理解(微信号:react-javascript)。
1.可见与不可见
a.可见:Started、Resumed、Paused状态
Started:履行onCreate后,组件该处于Started状态,履行onStart事件,组件第1次显现在用户眼前,其各类页面信息均已设置完成。但是与Resumed不同的是,此时用户没法与Activity进行交互。
Resumed:履行完onStart后,进入Resumed状态,此时组件处于可交互状态,用户可以进行输入和读取。
Paused:组件失去焦点,用户点击返回键或组件被覆盖了。组件处于半可见状态,但是此时页面UI还是可以更新的。
b.不可见:Created、Stopped、Destroyed
Created:履行onCreate事件,设置页面元素与布局,绑定各类 数据,建立与页面布局文件关联setContentView。
Stopped:页面不可见,1般在新的组件创建并进入新组件时,原组件将不可见,进入Stopped状态。
Destroyed:组件被烧毁。
2.3个环路
a.Resumed->Paused->Resumed:轻量级环路,1般处于页面频繁操作,无需重新设置初始数据。类似于行驶汽车的刹车,需要随时停止,但其实不关闭发动机。
b.Started->Resumed->Paused->Stopped:1个可以称之为半重启的环路,仅仅只是不需要履行onCreate,不需要设置页面布局。履行onStop事件后,组件称为后台利用。
c.Created->Started->Resumed->Paused->Stopped->Created:此环路并没有在图形中划出来,仅仅在内存不够,别的利用需要内存的情况下履行,相应的组件进程会被killed,但用户履行back,系统将重现创建组件。
3.可履行次数
a.只有1次:onCreate、onDestroy.
b.其它可以屡次。
除Activity正常创建运行外,其它操作也会引发Activity的状态变化。
从状态变换可以看出,在屏幕旋转时状态变化类似于重新创建,但是在现实利用中我们常常有这样的需求。在Android中采取的是onSaveInstanceState和onRestoreInstanceState进行保存数据和恢复数据。
Activity是Android系统中最重要的组件,各个状态转换也存在1些模糊的界限,哪一个操作具体放在哪一个事件中需要根据Acitvity的状态特点和业务需要来定,并不是只能放着1个地方,仁者见仁、智者见智了。
上一篇 Java分布式事务原理及应用