Android ApiDemos详解之App/Activity/Forwarding(5)
2011-12-18 22:35
387 查看
AndroidApiDemos详解之App->Activity->Forwarding
这个实例非常简单,主旨就是为了让大家知道Activity Stack的意义,也即大家熟知的栈。那么首先为大家介绍一下什么是ActivityStack。
Activity承担了大量的显示和交互工作,从某种角度上将,我们看见的应用程序就是许多个Activity的组合。为了让这许多Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出的原则,系统总是显示位于栈顶的Activity,从逻辑上将,位于栈顶的Activity也就是最后打开的Activity,这也是符合逻辑的。
在操作应用程序时,每次启动新的Activity,都会将此压入Activity Stack,当用户执行返回操作时,移除Activity Stack顶上的Activity,这样就实现了返回上一个Activty的功能。直到用户一直返回到Home Screen,这时候可以理解为移除了Activity Stack所有的Activity,这个Activity Stack不再存在,应用程序也结束了运行。
而本例通过两个Activity来演示此机制:先启动Activity1,通过Activity1中的一个按钮启动Activity2的同时销毁Activity1,那么此时如果从Activity2返回的话就会直接返回到Activity1前的那一个ListActivity,如下图所示:
第一步,点击Forwarding进入该示例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/e3a45d35333e3aab10e69fe69cc3391d.gif)
第二步,点击go按钮,这时会销毁当前Activity同时跳入下一个Activity:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/5593f0ca56ca40b43ff1067477cd2915.gif)
第三步,点击返回按钮
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/dfd14c5ecd57b7586b5b6f914d017813.gif)
第四步,返回到第一步界面
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/75390a9138a7fab2a902e8fbaacbaa3a.gif)
下面来简单的看一下代码,第一个Activity的代码主要部分就是按钮的点击事件的响应方法,如下:
其中值得一提的是Intent,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
本例中Intent的作用是实现从Forwarding跳转至ForwardingTarget
这个实例非常简单,主旨就是为了让大家知道Activity Stack的意义,也即大家熟知的栈。那么首先为大家介绍一下什么是ActivityStack。
Activity承担了大量的显示和交互工作,从某种角度上将,我们看见的应用程序就是许多个Activity的组合。为了让这许多Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出的原则,系统总是显示位于栈顶的Activity,从逻辑上将,位于栈顶的Activity也就是最后打开的Activity,这也是符合逻辑的。
在操作应用程序时,每次启动新的Activity,都会将此压入Activity Stack,当用户执行返回操作时,移除Activity Stack顶上的Activity,这样就实现了返回上一个Activty的功能。直到用户一直返回到Home Screen,这时候可以理解为移除了Activity Stack所有的Activity,这个Activity Stack不再存在,应用程序也结束了运行。
而本例通过两个Activity来演示此机制:先启动Activity1,通过Activity1中的一个按钮启动Activity2的同时销毁Activity1,那么此时如果从Activity2返回的话就会直接返回到Activity1前的那一个ListActivity,如下图所示:
第一步,点击Forwarding进入该示例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/e3a45d35333e3aab10e69fe69cc3391d.gif)
第二步,点击go按钮,这时会销毁当前Activity同时跳入下一个Activity:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/5593f0ca56ca40b43ff1067477cd2915.gif)
第三步,点击返回按钮
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/dfd14c5ecd57b7586b5b6f914d017813.gif)
第四步,返回到第一步界面
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/02/75390a9138a7fab2a902e8fbaacbaa3a.gif)
下面来简单的看一下代码,第一个Activity的代码主要部分就是按钮的点击事件的响应方法,如下:
public void onClick(View v) { Intent intent = new Intent(); intent.setClass(Forwarding.this, ForwardTarget.class); startActivity(intent); finish(); }
其中值得一提的是Intent,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
本例中Intent的作用是实现从Forwarding跳转至ForwardingTarget
finish();上面一行代码finish()则是实现在跳转后将Forwarding这一Activity进行销毁。
相关文章推荐
- Android ApiDemos示例解析(7):App->Activity->Forwarding
- Android ApiDemos示例解析(7):App->Activity->Forwarding
- Android ApiDemos详解之App/Activity/Custom Dialog(2)
- Android ApiDemos详解之App_Activity_Persistent State(9)
- Android ApiDemos详解之App/Activity/Dialog(4)
- Android ApiDemos详解之App/Activity/Animation(3)
- Android ApiDemos详解之App_Activity_Intents(8)
- [Android Samples视频系列之ApiDemos]App-Activity-Forwarding
- Android ApiDemos详解之App/Activity/Custom Title(1)
- Android ApiDemos详解之App/Activity/Custom Dialog(2)
- Android ApiDemos详解之App/Activity/Animation(3)
- Android ApiDemos详解之App_Activity_IntentActivityFlags(7)
- Android ApiDemos详解之App_Activity_Hello World(6)
- Android ApiDemos详解之App->Activity->Custom Title
- Android ApiDemos详解之App/Activity/Custom Title(1)
- Android ApiDemos示例解析(14):App->Activity->Save & Restore State
- Android ApiDemos示例解析(13):App->Activity->Reorder Activities
- Android ApiDemos示例解析(18):App->Activity->Wallpaper
- Android ApiDemos示例解析(8):App->Activity->Hello world
- [Android Samples视频系列之ApiDemos] App-Activity-Translucent