售前咨询
技术支持
渠道合作

浅谈Activity 生命周期

什么是Activity

Activity是Android组件中最基本也是最为常见用的四大组件之一。Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。第一印象它是一个用于交互的系统模块,用户显示视图View。这个有点像MVC的结构,下面看一眼MVC。

M(Model 模型)这个放底层逻辑,放业务逻辑,比如和数据库的通信,比如业务逻辑。

V(View 视图)Android里视图呈现主要是xml文件,也有网页呈现,无论哪个View层放的就是用户看得见摸得着的东西

C(controller 控制器)控制层涉及到的就是Activity,它(C)负责联系视图(V)和模型(M),一般建议不要在Activity中写太多代码,尽量交给逻辑层处理。

Activity基本内容

Activity基本内容就是生命周期,下图为Activity生命周期图

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态:

1、活动状态,这个没啥说的就是你在操作的界面(得把装13的说法敲上:当前的Activity,位于Activity栈顶,用户可见并且可以获得焦点)

2、暂停状态,比如弹一个透明的Activity时候(失去焦点的Activity,仍然可见,在内存低的情况下不能被系统kill掉)

3、停止状态,比如程序打开了但是又干别的了(被其他Activity所覆盖,不可见但是保存所有的状态和信息,内存低的时候被Kill)

4、销毁状态,Activity结束

生命周期的过程

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

Activity生命周期方法解析

onCreate

当Activity第一次启动的时候被调用,在这个方法里面,一般是做一些初始化工作,例如create views(创建view视图),bind data to lists(给list绑定数据)等等,这个方法还为我们提供了一个带有Activity之前状态的Boundle。它总是跟在onStart方法后面。

onRestart

当Activity处于stop状态后调用。总是跟在onStart方法后面。

onStart

当Activity对用户可见的时候被调用。如果Activity来自于前台,跟在它后面的是onResume方法,如果Activity变成隐藏,那么跟在他后面的方法是onStop。

onResume

当Activity将要启动和用户交互的时候调用,这个时候,你的Activity处于Activity栈的顶端。跟在他后面的方法是onPause。

onPause

当系统即将开始恢复以前的活动时调用。通常用于提交未保存更改持久性数据,停止动画和其它可能消耗CPU的事情,等等。此方法的实现必须非常快,因为在方法返回之前,下一个Activity将不恢复。如果这个Activity是从后台返回前台,跟在它后面的方法是onResume,如果它对用户变的不可见,那么跟在它后面的是onStop方法。

onStop

当这个Activity不在显示给用户时调用,因为另一个Activity已经被恢复(resumed)并且已经覆盖了它,这可能出现在一个新的Activity正在被启动,或另一个存在的Activity要获得焦点,来到前台界面,又或者这个Activity将要被销毁。跟在它后面的通常有两种方法,如果这个Activity回到前台与用户进行交互,那么就是onRestart方法,如果这个Activity将要被销毁,则它后面的方法就是onDestroy。

onDestroy

当这个Activity被销毁的时候调用。

Activity从start到destroy的历程

Activity刚启动的时候,调用onCreate,onStart,onResume方法。此时Activity处于前台可见的位置。状态为正在运行(Running)。

当前Activity被其他Activity覆盖或者屏幕锁屏,系统会调用onPause方法,暂停当前的Activity执行。

当前的Activity由覆盖状态回到前台或者屏幕被解锁,系统会调用onResume方法,使Activity再次进入运行状态。

当前的Activity跳转到新的Activity界面或者按Home键回到主屏,在后台运行的时候,系统首先会调用onPause方法,然后调用onStop方法,进入停止状态。

用户后退回到此Activity时,系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

当前Activity处于不可见状态,系统内存不足的时候,系统会kill当前Activity,当用户退回当前的Activity,此时会再次调用onCreate方法,onStart方法,onResume方法,进入运行状态。

退出当前的Activity,系统首先调用onPause方法,然后调用onStop方法,最后调用onDestroy方法,结束当前的Activity。


代码签名证书是保护开发者的劳动成果,给自己开发的软件签名的证书,保证代码在签名之后不被恶意篡改。用户可通过对代码的数字签名来标识软件来源,辨别软件开发者的真实身份。GDCA的代码签名证书支持多种代码签名,已通过WEBTRUST国际认证。

上一篇:

下一篇:

相关文章