掌握活动的生命周期很是重要,由于一个正常的android应用,会有不少的活动,如何在这些活动之间进行切换、数据的交互等,就常常会用到活动的生命周期这一块的知识。能够说,只要掌握了活动的生命周期,才能更流畅的写android的程序。html
掌握活动的生命周期很是重要,由于一个正常的android应用,会有不少的活动,如何在这些活动之间进行切换、数据的交互等,就常常会用到活动的生命周期这一块的知识。能够说,只要掌握了活动的生命周期,才能更流畅的写android的程序。html
栈你们都知道,一个最基础的数据结构。拥有着后进先出的特性。就比如一个瓶子,咱们往里面放乒乓球,最后放的乒乓球确定在瓶子的最上面,因此,当咱们要从瓶子里拿乒乓球的时候,最后放的乒乓球会最早被拿出来,这就是最基础的栈android
而activity是使用任务来管理的,一个任务就是一组存在栈里的活动的集合,这个栈就是返回栈。数据结构
意思就是,一个android系统中会有多个任务,而一个任务就就对应着一个返回栈。app
因此,android中的活动是层叠的,每启动一个新的活动,活动就会被加入栈的顶端,成为topactivity,覆盖在原先的topactivity之上,点击返回键会销毁最上面的活动,而下面的一个活动就会从新成为topactivity函数
活动总共有4种状态:工具
1)运行状态;spa
2)暂停状态;3d
3)中止状态;htm
4)销毁状态blog
1)运行状态
当一个活动位于返回栈的栈顶,就处于运行状态了。系统是不会去回收运行状态的活动的。试问,你正在玩游戏,结果系统给你回收了,一下回到主页了,你内心确定不爽的。
2)暂停状态
若是我如今启动了一个新的活动,但这个活动并无占满全屏,因此你仍然能够从旁边的空余空间看到后面的activity,然后面的这个activity就处于暂停状态。位于暂停状态的活动,系统通常也不会回收的。由于用户可能会很快点击返回键从新回到这个活动中来。试问,若是你在当前的主活动中弹出了一个对话框,你选择完返回后,发现界面不在了,内心确定是不爽的。固然,若是内存真的很低很低了,系统才会考虑回收。不过如今的手机内存都很大,通常不多出现这种情况了。
3)中止状态
当一个活动彻底不可见,就处于中止状态了。好比,你在一个activity中启动了第二个activity,第一个activity就处于中止状态了。处于中止状态的活动,他的数据和状态是不可靠的,由于系统可能会回收这一块数据。但不用担忧,这些数据实际上是能够经过代码保存起来的、
4)销毁状态
当一个活动从返回栈移除,好比,我按了返回键,这个活动就被移除了。此时,活动就进入了销毁状态,系统很是乐意销毁这一块数据,固然,用于也会很是乐意系统去销毁这一块数据。否则,活动都不被销毁,那要占用多少的资源啊,手机很快就跪了。
活动有7个方法,分别是:
1)onCreate();
2)onStart();
3)onResume();
4)onPause();
5)onStop();
6)onDestroy();
7)onRestart();
1)onCreate()
这个方法在活动第一次建立的时候会被调用。注意,是第一次建立。若是活动从中止状态从新进入运行状态,是不会调用这个方法的
2)onStart()
这个活动由不可见进入可见的时候调用。好比,当从中止状态进入到运行状态会调用。好比,一个activity中打开一个对话框,再按返回键从新进入这个活动,这个方法是不会被调用的。
3)onResume()
当活动准备好和用户进行交互的时候调用。举例,如今许多同窗在一块儿赛跑,老师说,下一组要跑步的走到起跑线,准备跑。此时就是onResume(),此时的活动必定位于前台,学生必定站在了跑道上,一个道理。
4)onPause()
当前活动须要去启动另外一个活动,或者恢复另外一个活动的时候去调用。这个方法中,咱们能够将一些CPU资源等释放掉,由于当你不在前台了,处于暂停或者中止甚至是销毁状态了,就应该让出一些资源,减小系统的负担。
5)onStop()
活动彻底不可见的时候调用。好比,当前activity启动了一个对话框式的活动,那么是不会执行onStop()的。但启动了一个全屏的activity,就会获得调用。
6)onDestroy()
这个很好理解,不用多说了,活动被销毁了,按返回键了,或者finish等
7)onRestart()
由中止状态变为运行状态了,被调用。若是是暂停状态变为运行状态,是不会被调用的。
如今写一个android程序,具体程序代码就不写了。这个程序主要有如下几个功能:
1)主activity,内有2个按钮,一个是启动一个新的acvitityA,另外一个是启动一个对话框式的activityB;
2)新添一个activityA,是全屏的;
3)新添一个activityB,是对话框的;
4)从新主activity的七大回调函数。
这里简单的写下代码。
如何建立一个对话框式的activity?
很简单,修改下清单文件中activity的注册便可
<activity
android:name="com.example.activitytest.DialogActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog" >
</activity>
增长了android:theme="@android:style/Theme.Dialog"
修改主活动的代码,重写7个回调函数
OK,如今让咱们点击图标,启动这个应用程序;
发现,调用了下图3个函数。
此时再点击返回键,退出程序,调用了下图的函数。
在这个程序中启动另外一个活动。
在第二个活动中安返回键,从新回到这个活动
如今,再启动另外一个对话框式的activity
再从新回到这个activity