• 什么是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. java参数转换为javaBean对象

    package com.tuxin.tool.json; import flexjson.JSONDeserializer;import flexjson.JSONSerializer;import ...

  2. unity下3d模型的透明处理

    1.若只是改变模型的透明度:点击模型,在Inspector中可以看到很多模型的属性.找到要改变透明度的地方,更改shader渲染的方式选中Transparent(透明度)的diffuse,之后调节Ma ...

  3. uva 10816 Travel in Desert(简单的好题~两种方法)

    题意: 给出 一个图 点与点之间的路径上有两个权值 路径长度和温度 要求在所走路径中的温度的最大值最小的前提下 走最短路径 解题思路1: 首先用 最小生成树 的方法走出 最小瓶颈路 .把在这期间用到的 ...

  4. escape()、encodeURI()、encodeURIComponent()区别详解 (转)

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComp ...

  5. Cena评测系统在win10中测评cpp程序

    1.装了cena-0.8.1-20110710-setup.exe 2.打补丁:cena-0.8.2-patch.zip 3.菜单->工具->选项->编程语言   修改G++ (mi ...

  6. V8 下的垃圾回收机制

    V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 1.新生代算法 新生代中的对象一般存活时间较短,使用 Scavenge GC 算法. ...

  7. 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

    在写代码之前我们先了解一下这三个框架分别是干什么的? 相信大以前也看过不少这些概念,我这就用大白话来讲,如果之前有了解过可以跳过这一大段,直接看代码! SpringMVC:它用于web层,相当于con ...

  8. SED单行脚本快速参考(Unix 流编辑器)(转)

    sed.sourceforge.net被封杀,特在此处贴上官方的sed 使用说明文档 SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日 英文标题:USEFUL ONE-LINE S ...

  9. 关于MYSQL ERROR1045 报错的解决办法

    **问题描述 **ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)或者ERROR ...

  10. latex学习(二)

    1.我是在ubuntu18.04下安装的,使用的是清华的源:https://mirrors.tuna.tsinghua.edu.cn/help/CTAN/ 下载安装包:http://mirror.ct ...