首页 > 代码库 > Android四大组件之——Activity(一)定义、状态和后退栈

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就是暂停状态。

          

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