博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
阅读量:5973 次
发布时间:2019-06-19

本文共 1531 字,大约阅读时间需要 5 分钟。

 

  • 什么是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,欢迎交流讨论。      

           欢迎转载,转载请在文章开头处注明本博客网址:

          如果喜欢,请点推荐!

你可能感兴趣的文章
Qt之QComboBox定制
查看>>
QA、Selenium WebDriver (Q&A)
查看>>
linux命令行中单个减号表示标准输入输出流
查看>>
C#线程系列讲座(3):线程池和文件下载服务器
查看>>
西部数据出现“WD SES Device USB Device”怎么办,而且说明书全是英文。
查看>>
自定义异常 状态码 以及Aop拦截Apect
查看>>
Chapter 11 homework
查看>>
[scrum]2011/10/9-----第十天
查看>>
First reject from Apple, but I feel lucky!
查看>>
ZOJ 3784 String of Infinity AC自动机
查看>>
利用java操作Excel(转)
查看>>
输入一串字符串,统计各个字符出现的次数
查看>>
fedora 安装图形界面
查看>>
python初接触
查看>>
Android 3.0 r1 API中文文档(107) —— AsyncPlayer
查看>>
Shortcut Collapse project or projects in the Solution Explorer Microsoft Visual Studio 2008
查看>>
PHP cookie和session的分析
查看>>
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
查看>>
C#中在panel上写文字并换行的方法
查看>>
AutoResetEvent和ManualResetEvent
查看>>