• 什么是Activity

关键字:应用组件、四大组件、用户界面,交互

An Activity is an application component that provides a screen with which users can interact in order to do something

每个Android应用打开,一般都有界面与用户进行交互,以完成输入,输出等一些功能。提供这个功能的就是Android四大组件之一,Activity

Activity提供一个窗口描绘了用户界面,窗口的大小可以是:全屏窗口,浮动的窗口,嵌入在其他Activity里面(使用ActivityGroup)。

一个应用一般包含多个Activity,每个Activity都被设计围绕着用户能执行的特定种类的action,也能开启其他的Activity。

如下图所示,Chrome应用中的Activity。

  • Activity与后退栈(back stack)

用户打开的activity都被安排进了一个栈(后退栈,back stack,符合后进先出原则"First in Last out")。

当前activity开启另一个activity,新的activiy压入栈顶并且获得焦点。先前的activity依然在栈里,但是是停止的。系统保留了它用户界面当前的状态。

当用户按返回按钮时,当前的activity从栈顶弹出(activity被销毁destroyed),之前的Activity恢复(恢复先前保存的用户界面状态)。

栈中的activity永远不会重新排列。只会从栈中压入和弹出

压入:用户从当前Activity开启到另一个Activity

弹出:用户按返回键离开当前Activity。

下图展示了

   用户依次打开Activity1、Activity2、Activity3,然后按返回键离开Activity3返回Activity2

后退栈的情况的示意图。

  • Activity的几种状态

1.Resumed(或running):运行状态

activity在屏幕前台,并且有用户焦点。

2.Paused:暂停状态

另一个activity在前台并且有用户焦点。但是这个activity仍然可见(visible)。

另一个Activity在这个Activity上面,它部分透明或是没有覆盖整个屏幕。

一个暂停状态的activity完全是alive的(Activity对象保存在内存中,它保留着所有的状态和成员信息,依然附属于(attached to)window manager),但是在极其低存储空间的情况下会被系统杀掉。

3.Stopped:停止状态

activity完全被其他activity遮蔽(现在在后台)。

一个停止的activity也是alive的(Activity对象保存在内存中,它保留着所有的状态和成员信息,但是没有附属于(attached to)window manager)对用户不再可见,当内存在别处需要时,它随时可能被杀掉。

下面这张图很好的描述了Activity的运行和暂停这两种状态。

second Activity是运行状态,但是它没有覆盖整个屏幕,而之前的那个Activity就是暂停状态。

(4.Killed:死亡状态)

Activity被系统杀死回收占用的资源,或没有启动。

官方文档是说的Activity三种状态,没有最后这种。便于理解,加上了killed状态。

  • Activity状态转换:

本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。

欢迎转载,转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai

如果喜欢,请点推荐!

Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)的更多相关文章

  1. Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

                如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com   ...

  2. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  3. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  4. 【Android开发日记】之入门篇(四)——Android四大组件之Activity

    在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...

  5. Android 四大组件之 Activity(二)

    1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...

  6. Android四大组件及activity的四大启动模式

    Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...

  7. Android 四大组件之 Activity(一)

    1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...

  8. [Android基础]Android四大组件之Activity总结

    1.Activity简介 Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口.在每个Activity中都可以放很多控件,所以也可以 ...

  9. Android 四大组件之Activity(续2)

    1.生命周期 关于生命周期,在详细讲解下: 上图是从android官网获取的生命周期. 正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况. 1)OnResume->OnPause-> ...

随机推荐

  1. C# 设计模式速记

    设计模式分三种类型,共23种: 行为型:规定了对象之间交互的方式:行为模式定义系统内对象间的通信,以及复杂程序中的流程控制. 结构型:规定了如何组织类和对象:结构型模式可以将一组对象组合成更大的结构, ...

  2. JAVA递归、非递归遍历二叉树(转)

    原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...

  3. art.template 循环里面分组。

    后台提供给我们一个数组,我们要用模版实现上面的格式输出怎么版呢? 下面就是解决方案: <h2>循环4个一组</h2> <script type="text/ht ...

  4. GIS中栅格数据结构的显示与计算

    在GIS中,根据数据存储的表现形式不同,通常将空间数据分为矢量数据和栅格数据.最简单的区别是:当栅格数据放大到一定程度时,就会呈现出我们熟悉的讨厌的"马赛克". 栅格数据存储 最简 ...

  5. PL/SQL学习笔记之变量、常量、字面量、字符串

    一:变量 1:变量声明与初始化 variable_name datatype(约束) [:= | DEFAULT 初始值] 如: sales , ); name ); a ; greetings ) ...

  6. zabbix 客户端安装配置

      1.下载zabbix wget http://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.7/zabb ...

  7. GDALSetProjection使用的一个注意事项

    GDALSetProjection 简述 GDALSetProjection是用来给GDALDataset设定投影信息(坐标系统)的接口,实际上是GDALDataset::SetProjection这 ...

  8. vmlinux,zImage,bzImage,vmlinuz,uImage,关系

    zImage和uImage的区别 一.vmlinuz vmlinuz是可引导的.压缩的内核.“vm”代表“Virtual Memory”.Linux 支持虚拟内存,不像老的操作系统比如DOS有640K ...

  9. std::lower_bound 功能

    std::lower_bound default (1) template <class ForwardIterator, class T> ForwardIterator lower_b ...

  10. Android UI系列-----ImageView的scaleType属性

    这篇随笔将会简单的记录下ImageView这个控件的一些使用方法,以及其最重要的一个属性: scaleType ImageView这个控件是用来显示图片用的,例如我们可以通过下面这段xml配置来声明显 ...