程序员人生 网站导航

从零开始学习Android 开发笔记-Activity生命周期

栏目:综合技术时间:2017-03-31 09:18:32


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的状态变化。

  • 屏幕旋转:Activity将烧毁后,重新创建,由于已使得页面布局变化,将从onCreate开始履行。
  • Back键:原Activity将顺次调用onRestart、onStart、onResume。

从状态变换可以看出,在屏幕旋转时状态变化类似于重新创建,但是在现实利用中我们常常有这样的需求。在Android中采取的是onSaveInstanceState和onRestoreInstanceState进行保存数据和恢复数据。

  • onSaveInstanceState中保存数据,onSaveInstanceState在onPause以后,onStop之前履行。
  • onRestoreInstanceState中读取数据,在onStart以后,onResume之前履行。

Activity是Android系统中最重要的组件,各个状态转换也存在1些模糊的界限,哪一个操作具体放在哪一个事件中需要根据Acitvity的状态特点和业务需要来定,并不是只能放着1个地方,仁者见仁、智者见智了。




------分隔线----------------------------
------分隔线----------------------------

最新技术推荐