• 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. 2

      1)运行状态

      当一个活动位于返回栈的栈顶,就处于运行状态了。系统是不会去回收运行状态的活动的。试问,你正在玩游戏,结果系统给你回收了,一下回到主页了,你心里肯定不爽的。

    3. 3

      2)暂停状态

      如果我现在启动了一个新的活动,但这个活动并没有占满全屏,所以你仍然可以从旁边的空余空间看到后面的activity,而后面的这个activity就处于暂停状态。位于暂停状态的活动,系统一般也不会回收的。因为用户可能会很快点击返回键重新回到这个活动中来。试问,如果你在当前的主活动中弹出了一个对话框,你选择完返回后,发现界面不在了,心里肯定是不爽的。当然,如果内存真的很低很低了,系统才会考虑回收。不过现在的手机内存都很大,一般很少出现这种状况了。

    4. 4

      3)停止状态

      当一个活动完全不可见,就处于停止状态了。比如,你在一个activity中启动了第二个activity,第一个activity就处于停止状态了。处于停止状态的活动,他的数据和状态是不可靠的,因为系统可能会回收这一块数据。但不用担心,这些数据其实是可以通过代码保存起来的、

    5. 5

      4)销毁状态

      当一个活动从返回栈移除,比如,我按了返回键,这个活动就被移除了。此时,活动就进入了销毁状态,系统非常乐意销毁这一块数据,当然,用于也会非常乐意系统去销毁这一块数据。不然,活动都不被销毁,那要占用多少的资源啊,手机很快就跪了。

      END

    三.活动的生存期 -- 7个回调方法

     
    1. 1

      活动有7个方法,分别是:

      1)onCreate();

      2)onStart();

      3)onResume();

      4)onPause();

      5)onStop();

      6)onDestroy();

      7)onRestart();

      android 活动的生命周期
    2. 2

      1)onCreate()

      这个方法在活动第一次创建的时候会被调用。注意,是第一次创建。如果活动从停止状态重新进入运行状态,是不会调用这个方法的

    3. 3

      2)onStart()

      这个活动由不可见进入可见的时候调用。比如,当从停止状态进入到运行状态会调用。比如,一个activity中打开一个对话框,再按返回键重新进入这个活动,这个方法是不会被调用的。

    4. 4

      3)onResume()

      当活动准备好和用户进行交互的时候调用。举例,现在许多同学在一起赛跑,老师说,下一组要跑步的走到起跑线,准备跑。此时就是onResume(),此时的活动一定位于前台,学生一定站在了跑道上,一个道理。

    5. 5

      4)onPause()

      当前活动需要去启动另一个活动,或者恢复另一个活动的时候去调用。这个方法中,我们可以将一些CPU资源等释放掉,因为当你不在前台了,处于暂停或者停止甚至是销毁状态了,就应该让出一些资源,减少系统的负担。

    6. 6

      5)onStop()

      活动完全不可见的时候调用。比如,当前activity启动了一个对话框式的活动,那么是不会执行onStop()的。但启动了一个全屏的activity,就会得到调用。

    7. 7

      6)onDestroy()

      这个很好理解,不用多说了,活动被销毁了,按返回键了,或者finish等

    8. 8

      7)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个方法。

  • 相关阅读:
    libZPlay 音频编码解码器库
    C# PropertyGrid控件
    .netGDI+(转)
    (转)JITComplier、NGen.exe及.NET Native
    c# 特性/属性(Attribute) 以及使用反射查看自定义特性
    Fluent NHibernate系列文章
    Hibernate工作原理
    Orchard核心机制
    NHibernate和 FluentNHibernate
    极限编程之TDD
  • 原文地址:https://www.cnblogs.com/helloy-Net/p/8360892.html
Copyright © 2020-2023  润新知