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

          如果喜欢,请点推荐!

相关文章
|
4月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
5月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
5月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
180 0
|
3月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
136 6
|
5月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
51 3
|
5月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
48 3
|
5月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
5月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
107 6
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
43 0