安卓开发:Activity的生命周期

来源:互联网 发布:开淘宝店做什么前景好 编辑:程序博客网 时间:2024/05/17 22:15

众所周知,Activity是安卓的门面担当,由Activity调用setContentView()方法,加载某个xml文件,最后将内容显示给用户。是用户直接操作应用程序的类。

Activity的直接父类是ContextThemeWrapper,最“祖宗的”类是:Context。也就是说Activity本身就是一个“上下文”。“上下文”相当于“宿主”,我们要用Toast【吐司类】或者Dialog【弹出窗口类】的时候,就需要寄托在Context上。表明是在哪个显示界面中显示。

还有一个类是Application类。这个是应用程序类,Application继承的最“祖宗的”类也是Context类。Application中也含有一个getApplicationContext()方法,可以获取全局的Context,这也是Application和Activity的区别。Application相当于是整个应用程序,能包含多个Activity。而Activity只是应用程序的一部分。我们也可以自己写个实体类继承自Application,随时随地获取全局Context。可以参考博文:点击参考

这里我们主要讲讲Activity的生命周期。图如下:
这里写图片描述

为了更好的了解每个函数的作用,我们先来看看Activity的几种状态:
⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能够与用户进行交互

⒉ 暂停状态(Paused):Activity失去焦点,Activity界面被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,与窗口管理器保持连接),但是在系统内存不够用的时候将被杀掉)

⒊停止状态(Stopped):Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡,但它依然保持所有状态和成员信息,只是它不再可见,它的窗口被隐藏

⒋非活动状态(Killed):当系统内存需要被用在其他地方的时候,一个停止状态的Activity被杀掉。

1、onCreate()方法:这个是在我们新建Activity子类的时候,编译器会自动帮我们生成的方法。该方法表示“一个窗口正在生成”,但不会产生窗口实体,在这个方法中,我们常常会用来调用setContentView()方法来设置该Activity的UI、获取布局文件中的控件等等。【处于停止状态Stopped】

2、onStart()方法:是在OnCreate()方法执行完毕后才执行的。【处于激活状态】

3、onResume()方法:能让Activity处在返回栈的最顶层,能与用户发生交互。【处于运行状态】

4、onPause()方法:从活动A跳转到活动B,活动A就会调用OnPause()方法、或者是手机锁屏了、或者是有Dialog【弹出窗口类】弹出。会保持数据,如View控件的数据等等。但如果内存不足时,会回收该活动。【处于暂停状态】

5、onStop()方法:与onPause()方法成对出现,在onPause()方法调用后,会调用该方法。调用后有两种情况:1)、被系统销毁;2)、调用onReStart()方法,重新回到返回栈顶部。

6、onReStart()方法:该方法会让活动重新回到返回栈的顶部,重新获得焦点,与用户交互。

7、onDestroy()方法:销毁Activity。

相信经过上述的讲述,能很清楚的知道Activity的生命周期了。【有点像进程的感觉】
这里提供一些技巧:
1、继承自BaseActivity类,BaseActivity类的作用是在onCreate()方法中打印类名。这样的话,代码量大的应用程序能很快的通过logcat中查看类名。

2、随时随地退出Activity:
由于是继承自BaseActivity,我们再新建一个MyCollection类用于将该应用程序创建的所有的Activity实例都保存起来,这样就能做到随时随地销毁该Acticity了。

了解完了Activity的生命周期,还可以看看Activity的四种启动模式,参考博文:点击参考

1 0
原创粉丝点击