掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换、数据的交互等,就经常会用到活动的生命周期这一块的知识。可以说,只要掌握了活动的生命周期,才能更流畅的写android的程序。

工具/原料

 
  • android环境

一.返回栈

 
  1. 1

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

  2. 2

    而activity是使用任务来管理的,一个任务就是一组存在栈里的活动的集合,这个栈就是返回栈。

    意思就是,一个android系统中会有多个任务,而一个任务就就对应着一个返回栈。

  3. 3

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

    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();

  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"

  3.  

    修改主活动的代码,重写7个回调函数

  4.  

    OK,现在让我们点击图标,启动这个应用程序;

    发现,调用了下图3个函数。

  5.  

    此时再点击返回键,退出程序,调用了下图的函数。

  6.  

    在这个程序中启动另一个活动。

  7.  

    在第二个活动中安返回键,重新回到这个活动

  8.  

    现在,再启动另一个对话框式的activity

  9.  

    再重新回到这个activity

    END

四.活动的生命周期

 
  1. 1

    从上面说的可以看出,活动分为;

    完整生存期:onCreate()方法和onDestroy()之间,总共调用了6个方法。

    可见生存期:活动在onStart()方法和onStop()之间,总共4个方法,再加上重新运行的onRestart()方法,总共5个。

    前台生存期:活动在onResume()方法和onPause()方法,总共2个方法。

android 活动的生命周期的更多相关文章

  1. Xamarin.Android活动的生命周期

    一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...

  2. Android活动的生命周期

    掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序. -------------------------------------- ...

  3. 记不住的Android活动的生命周期

    Activity基类定义了管理一个互动的生命周期的一系列事件. Activity生命周期的一系列事件onCreate()——当前活动首次被创建时使用.onStart()——当前活动对用户可见时调用.o ...

  4. android ——活动的生命周期

    在其生命周期内,activity在运行.暂停和停止三种可能的状态间进行转换,不同状态之间互相转换的时候的调用不同的方法,重写这些方法就能在活动切换,被销毁时保存或传输数据,在被启动.被切换出来时接收数 ...

  5. Android笔记——活动的生命周期

    一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...

  6. Android学习笔记(五)——活动的生命周期

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的. ...

  7. Android studio教程:[5]活动的生命周期

    想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...

  8. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  9. android:activity活动的生命周期

    掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有 ...

随机推荐

  1. 简单Nginx下防跨站、跨目录安全设置,支持PHP 5.3.3以上版本

    Nginx下存在跨站和跨目录的问题,跨站和跨目录影响同服务器/VPS上的其他网站. PHP在5.3.3以上已经增加了HOST配置,可以起到防跨站.跨目录的问题. 如果你是PHP 5.3.3以上的版本, ...

  2. 使用vue-cli脚手架创建的项目结构详解

    项目整体目录结构预览 src目录 src整体结构 开发过程中基本上操作都在该目录下进行操作的,项目所有源码都是在这个目录下 main.js文件,项目核心文件 App.vue文件,项目入口文件 rout ...

  3. win7下面搭建angularjs开发环境

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 1.安装git,添加环境变量2.github上有一个比较好的纯净AngularJs app的种 ...

  4. Oracle数据库查询优化(上百万级记录如何提高查询速度)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...

  5. Emoji表情符号在MySQL数据库中的存储

    文章转自https://www.jianshu.com/p/20740071d854 在Android手机或者iPhone的各种输入法键盘中,会自带一些Emoji表情符号,如IPhone手机系统键盘包 ...

  6. MP实战系列(七)之集成springboot

    springboot是现在比较流行的微服使用的框架,springboot本质上就是将spring+springmvc+mybatis零配置化,基本上springboot的默认配置符合我们的开发.当然有 ...

  7. PAT A1120 Friend Numbers (20 分)——set

    Two integers are called "friend numbers" if they share the same sum of their digits, and t ...

  8. MySQL 误操作后如何快速恢复数据~!~!~

    基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了 ...

  9. java 容器 List

    1.概念:Java容器类类库的用途是保存对象,容器中不能存储基本数据类型,必须是对象(引用数据类型) 2.为什么需要容器:主要是在以数组作为数据的存储结构中,其长度难以扩充,同时数组中元素类型必须相同 ...

  10. 软概(lesson 1):Javaweb实现用户登录界面

    一.问题描述 二.网站系统开发所需要的技术 网站界面开发:html 后台所需要的技术:java基本内容,数据库语句,连接数据库实现增删改查 本题所用技术:数据库链接以及增加功能,基本html语句 技术 ...