【Android】15、活动的生命周期

本篇博文最后修改时间:2016年5月5日,23:37。

一、简介

本篇介绍活动的生命周期。

二、实验平台

系统版本:Windows7 家庭普通版 32位操作系统。

三、版权声明

博主:思跡

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.net/omoiato

联系方式:[email protected]

Java零基础入门交流群:541462902

四、活动的生命周期

1、学习意义

掌握活动的生命周期对任何Android 开发者来说都非常重要,

当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,

并在如何合理管理应用资源方面,你会发挥的游刃有余。

你的应用程序将会拥有更好的用户体验。

2、返回栈

Android 是使用任务(Task)来管理活动的,

一个任务就是一组存放在栈里的活动的集合,

这个栈也被称作返回栈(Back Stack)。

栈是一种后进先出的数据结构,

在默认情况下,每当我们启动了一个新的活动,

它会在返回栈中入栈,并处于栈顶的位置。

而每当我们按下Back 键或调用finish()方法去销毁一个活动时,

处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。

系统总是会显示处于栈顶的活动给用户。

3、活动状态

每个活动在其生命周期中最多可能会有四种状态。

① 运行状态

当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。

系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。

②暂停状态

当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。

你可能会觉得既然活动已经不在栈顶了,还怎么会可见呢?

这是因为并不是每一个活动都会占满整个屏幕的,

比如对话框形式的活动只会占用屏幕中间的部分区域,

你很快就会在后面看到这种活动。

处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动

(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响),

只有在内存极低的情况下,系统才会去考虑回收这种活动。

③停止状态

当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,

当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。

④销毁状态

当一个活动从返回栈中移除后就变成了销毁状态。

系统会最倾向于回收处于这种状态的活动,从而保证手机的内存充足。

4、活动的生存期

Activity 类中定义了七个回调方法,覆盖了活动生命周期的每一个环节,

下面我来一一介绍下这七个方法。

① onCreate()

它会在活动第一次被创建的时候调用。

你应该在这个方法中完成活动的初始化操作,

比如加载布局、绑定事件等。

②onStart()

这个方法在活动由不可见变为可见的时候调用。

③onResume()

这个方法在活动准备好和用户进行交互的时候调用。

此时的活动一定位于返回栈的栈顶,并且处于运行状态。

④onPause()

这个方法在系统准备去启动或者恢复另一个活动的时候调用。

我们通常会在这个方法中将一些消耗CPU 的资源释放掉,

以及保存一些关键数据,但这个方法的执行速度一定要快,

不然会影响到新的栈顶活动的使用。

⑤onStop()

这个方法在活动完全不可见的时候调用。

它和onPause()方法的主要区别在于,

如果启动的新活动是一个对话框式的活动,

那么onPause()方法会得到执行,

而onStop()方法并不会执行。

⑥ onDestroy()

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

⑦onRestart()

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。

以上七个方法中除了onRestart()方法,其他都是两两相对的,

从而又可以将活动分为三种生存期。

完整生存期

活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。

一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,

而在onDestroy()方法中完成释放内存的操作。

可见生存期

活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。

在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。

我们可以通过这两个方法,合理地管理那些对用户可见的资源。

比如在onStart()方法中对资源进行加载,

而在onStop()方法中对资源进行释放,

从而保证处于停止状态的活动不会占用过多内存。

前台生存期

活动在onResume()方法和onPause()方法之间所经历的,就是前台生存期。

在前台生存期内,活动总是处于运行状态的,

此时的活动是可以和用户进行相互的,

我们平时看到和接触最多的也这个状态下的活动。

时间: 2024-08-21 17:34:03

【Android】15、活动的生命周期的相关文章

Xamarin.Android活动的生命周期

一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的,而不像Windows上开发的程序. 二.活动的生命周期 这里我们借助一张图帮助我们理解: 当然很多人现在还看不懂这张图,下面我们会逐一介绍: 1.OnCreate 这个方法是打开活动后第一个执行的事件,当然也是我们必须重写的一个方法,其中它大致负责如下的事情: l  创建视图 l  初始化变量 l 

Android活动的生命周期

掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序. -----------------------------------------------返回栈----------------------------------------------------------- Android的活动是可以层叠的.每启动一个新活动,就会覆盖在原有活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来. 其实An

(Android第一行代码活动的生命周期)生命周期

活动的生命周期   掌握活动的生命周期对任何 Android开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有更好的用户体验.     返回栈    1.  定义: Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动 的集合这个栈也被称作返回栈(Back Stack).    2. 栈顶:存放刚启动的一个新的活动.(当我们 按下 Back键或调用 finis

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

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的.我们每启动一个新的活动,就会覆盖在原活动之上,然后点击 Back 键会销毁最上面的活动.事实上,Android 是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack) .默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位

Android第一行代码学习笔记七---活动的生命周期

@1.返回栈 Android中的活动是可以层叠的,我们每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键就会销毁最上面的活动,下面一个活动就会重新显示出来. Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack).栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置.而当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,

【Android】16、体验活动的生命周期(上)

本篇博文最后修改时间:2016年5月8日,23:37. 一.简介 本篇介绍体验活动的生命周期. 二.实验平台 系统版本:Windows7 家庭普通版 32位操作系统. 三.版权声明 博主:思跡 声明:喝水不忘挖井人,转载请注明出处. 原文地址:http://blog.csdn.net/omoiato 联系方式:[email protected] Java零基础入门交流群:541462902 四.体验活动的生命周期 1.关闭ActivityTest 项目,新建一个ActivityLifeCycle

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

想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命周期. 工具/原料 Android studio 一部安卓手机或者安卓模拟器 Android studio如何重写函数 1 在Android studio中,如果需要重新某个函数,可以在菜单栏中的“code”下选择第一项“override methods”,或者按Ctrl+O打开. 2 在弹出的列表

Android 测试Service的生命周期

1 package com.example.myapp4; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import android.w

Android四大组件的生命周期

介绍生命周期之前,先提一下任务的概念 任务其实就是activity 的栈它由一个或多个Activity组成的共同完成一个完整的用户体验, 换句话说任务就是" 应用程序" (可以是一个也可以是多个,比如假设你想让用户看到某个地方的街道地图.而已经存在一个具有此功能的activity 了,那么你的activity 所需要做的工作就是把请求信息放到一个Intent 对象里面,并把它传递给startActivity().于是地图浏览器就会显示那个地图.而当用户按下BACK 键的时候,你的act