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

  • 什么是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

          如果喜欢,请点推荐!

时间: 2024-05-18 02:46:53

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

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

      如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com         [Android四大组件学习系列Activity篇]        1.Android四大组件之--Activity(一)定义.状态和后退栈(图文详解)        2.Android四大组件之--Activity的生命周期(图文详解)        3.Android四大组件之--Activit

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

      转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Android四大组件学习系列Activity篇]       1.Android四大组件之--Activity(一)定义.状态和后退栈(图文详解)       2.Android四大组件之--Activity的生命周期(图文详解)      上一篇文章讲了Activity的定义.状态和后退栈,现在讲讲A

Android编程四大组件之Activity用法实例分析_Android

本文实例讲述了Android编程四大组件之Activity用法.分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity.生命周期.内存管理.启动模式. 创建Activity 一.定义Activity 1. 定义Activity 定义类继承Activity 2.在AndroidManifest.xml的节点中声明<activity> 显式意图创建Activity三种方式方式 //第一种方式:构造函数,代码少 Intent intent1 =new Intent(this,NewA

Android编程四大组件之Activity用法实例分析

本文实例讲述了Android编程四大组件之Activity用法.分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity.生命周期.内存管理.启动模式. 创建Activity 一.定义Activity 1. 定义Activity 定义类继承Activity 2.在AndroidManifest.xml的节点中声明<activity> 显式意图创建Activity三种方式方式 //第一种方式:构造函数,代码少 Intent intent1 =new Intent(this,NewA

Android四大组件之Service(服务)实例详解_Android

本文实例讲述了Android四大组件之服务用法.分享给大家供大家参考,具体如下: 很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用. 为了处理这种后台进程,Android引入了Service的概念.Service在Android中是一种长生命周期的组件,它不实现任何用户界面. 基本概念 Ÿ   Service是一种在后台运行,没有界面的组件,由其他组件调用开始. Ÿ   创建Service,定义类继承Service,An

Android四大组件之Service(服务)实例详解

本文实例讲述了Android四大组件之服务用法.分享给大家供大家参考,具体如下: 很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用. 为了处理这种后台进程,Android引入了Service的概念.Service在Android中是一种长生命周期的组件,它不实现任何用户界面. 基本概念 Ÿ   Service是一种在后台运行,没有界面的组件,由其他组件调用开始. Ÿ   创建Service,定义类继承Service,An

Android四大组件之——ContentProvider(一)

Android四大组件之--ContentProvider(一) 本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论. 欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai 个人博客地址:http://johntsaiandroid.github.io 目录 1.ContentProvider * 1.1ContentProvider简介 * 1.2为什么有ContentProvider * 1.3Android官方的ContentProv

图文详解Android属性动画_Android

 Android中的动画分为视图动画(View Animation).属性动画(Property Animation)以及Drawable动画.从Android 3.0(API Level 11)开始,Android开始支持属性动画,本文主要讲解如何使用属性动画.关于视图动画可以参见博文<Android四大视图动画图文详解>. 一.概述 视图动画局限比较大,如下所述: 1.视图动画只能使用在View上面. 2.视图动画并没有真正改变View相应的属性值,这导致了UI效果与实际View状态存在差

【ANDROID游戏开发十二】(保存游戏数据 [上文])详解SHAREDPREFERENCE 与 FILEINPUTSTREAM/FILEOUTPUTSTREAM将数据存储到SD卡中!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/327.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读: