android 活动的生命周期

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述android 活动的生命周期相关的知识,希望能为你提供帮助。
掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换、数据的交互等,就经常会用到活动的生命周期这一块的知识。可以说,只要掌握了活动的生命周期,才能更流畅的写android的程序。
工具/原料  

  • android环境
一.返回栈  
  1. 1栈大家都知道,一个最基础的数据结构。拥有着后进先出的特性。就好比一个瓶子,我们往里面放乒乓球,最后放的乒乓球肯定在瓶子的最上面,所以,当我们要从瓶子里拿乒乓球的时候,最后放的乒乓球会最先被拿出来,这就是最基础的栈
    android 活动的生命周期

    文章图片
  2. 2而activity是使用任务来管理的,一个任务就是一组存在栈里的活动的集合,这个栈就是返回栈。
    意思就是,一个android系统中会有多个任务,而一个任务就就对应着一个返回栈。
    android 活动的生命周期

    文章图片
  3. 3所以,android中的活动是层叠的,每启动一个新的活动,活动就会被加入栈的顶端,成为topactivity,覆盖在原先的topactivity之上,点击返回键会销毁最上面的活动,而下面的一个活动就会重新成为topactivity
    android 活动的生命周期

    文章图片
    END
二.活动状态  
  1. 1活动总共有4种状态:
    1)运行状态;
    2)暂停状态;
    3)停止状态;
    4)销毁状态
  2. 21)运行状态
    当一个活动位于返回栈的栈顶,就处于运行状态了。系统是不会去回收运行状态的活动的。试问,你正在玩游戏,结果系统给你回收了,一下回到主页了,你心里肯定不爽的。
  3. 32)暂停状态
    如果我现在启动了一个新的活动,但这个活动并没有占满全屏,所以你仍然可以从旁边的空余空间看到后面的activity,而后面的这个activity就处于暂停状态。位于暂停状态的活动,系统一般也不会回收的。因为用户可能会很快点击返回键重新回到这个活动中来。试问,如果你在当前的主活动中弹出了一个对话框,你选择完返回后,发现界面不在了,心里肯定是不爽的。当然,如果内存真的很低很低了,系统才会考虑回收。不过现在的手机内存都很大,一般很少出现这种状况了。
  4. 43)停止状态
    当一个活动完全不可见,就处于停止状态了。比如,你在一个activity中启动了第二个activity,第一个activity就处于停止状态了。处于停止状态的活动,他的数据和状态是不可靠的,因为系统可能会回收这一块数据。但不用担心,这些数据其实是可以通过代码保存起来的、
  5. 54)销毁状态
    当一个活动从返回栈移除,比如,我按了返回键,这个活动就被移除了。此时,活动就进入了销毁状态,系统非常乐意销毁这一块数据,当然,用于也会非常乐意系统去销毁这一块数据。不然,活动都不被销毁,那要占用多少的资源啊,手机很快就跪了。
    END
三.活动的生存期 -- 7个回调方法  
  1. 1活动有7个方法,分别是:
    1)onCreate();
    2)onStart();
    3)onResume();
    4)onPause();
    5)onStop();
    6)onDestroy();
    7)onRestart();
    android 活动的生命周期

    文章图片
  2. 21)onCreate()
    这个方法在活动第一次创建的时候会被调用。注意,是第一次创建。如果活动从停止状态重新进入运行状态,是不会调用这个方法的
  3. 32)onStart()
    这个活动由不可见进入可见的时候调用。比如,当从停止状态进入到运行状态会调用。比如,一个activity中打开一个对话框,再按返回键重新进入这个活动,这个方法是不会被调用的。
  4. 43)onResume()
    当活动准备好和用户进行交互的时候调用。举例,现在许多同学在一起赛跑,老师说,下一组要跑步的走到起跑线,准备跑。此时就是onResume(),此时的活动一定位于前台,学生一定站在了跑道上,一个道理。
  5. 54)onPause()
    当前活动需要去启动另一个活动,或者恢复另一个活动的时候去调用。这个方法中,我们可以将一些CPU资源等释放掉,因为当你不在前台了,处于暂停或者停止甚至是销毁状态了,就应该让出一些资源,减少系统的负担。
  6. 65)onStop()
    活动完全不可见的时候调用。比如,当前activity启动了一个对话框式的活动,那么是不会执行onStop()的。但启动了一个全屏的activity,就会得到调用。
  7. 76)onDestroy()
    这个很好理解,不用多说了,活动被销毁了,按返回键了,或者finish等
  8. 87)onRestart()
    由停止状态变为运行状态了,被调用。如果是暂停状态变为运行状态,是不会被调用的。
    END
四.举例说明  
  1.   现在写一个android程序,具体程序代码就不写了。这个程序主要有以下几个功能:
    1)主activity,内有2个按钮,一个是启动一个新的acvitityA,另一个是启动一个对话框式的activityB;
    2)新添一个activityA,是全屏的;
    3)新添一个activityB,是对话框的;
    4)重新主activity的七大回调函数。
  2.   这里简单的写下代码。
    如何创建一个对话框式的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"
    android 活动的生命周期

    文章图片
  3.   修改主活动的代码,重写7个回调函数
    android 活动的生命周期

    文章图片
  4.   OK,现在让我们点击图标,启动这个应用程序;
    发现,调用了下图3个函数。
    android 活动的生命周期

    文章图片
  5.   此时再点击返回键,退出程序,调用了下图的函数。
    android 活动的生命周期

    文章图片
  6.   在这个程序中启动另一个活动。
    android 活动的生命周期

    文章图片
  7.   在第二个活动中安返回键,重新回到这个活动
    android 活动的生命周期

    文章图片
  8.   现在,再启动另一个对话框式的activity
    android 活动的生命周期

    文章图片
  9.   再重新回到这个activity
    android 活动的生命周期

    文章图片
    END
四.活动的生命周期  
  1. 1从上面说的可以看出,活动分为;
    完整生存期:onCreate()方法和onDestroy()之间,总共调用了6个方法。
    可见生存期:活动在onStart()方法和onStop()之间,总共4个方法,再加上重新运行的onRestart()方法,总共5个。
    前台生存期:活动在onResume()方法和onPause()方法,总共2个方法。
    【android 活动的生命周期】 

    推荐阅读