Applications

一个 Android应用程序其实就是由一个或者多个 Activity组成。它们被捆绑在一起并存放进 .apk文件中,这就是 Android应用程序。 Android中有着丰富的应用程序,比如邮件、日历、地图定位、文本消息、联系人、照相机、打电话、音乐播放器,系统设置等应用。

一般情况下,桌面上都会有 Android应用程序快捷图标,用户可以选择某一个图标来启动应用程序。

Activities

Activity Android应用程序的主要组成部分, activity可以是你自己创建的,当然,还可以是其它应用程序中的 activity。它们都是在运行时绑定上的,以便于应用程序扩展其自身的功能,它们一旦组合在一起,就会如同一个应用程序一样。每个 activity都有其独特的 UI、明确的功能,诸如打电话、看照片、听音乐等。任何一个应用程序都应至少有一个 activity

当使用 Android手机时,用户在屏幕上一个接一个地滑动或是点击图标启动 activity,完全不会注意到底层的行为——他们体验是无缝的。 activity后面有 activity task后面还会有 task

Activity 可以处理特定的数据类型和接受一相关的动作。每个 activity都有其各自的生命周期,互不干扰;并且它们都可以被用户或者系统独立启动、运行、暂停、恢复运行、停止、重新开始。正因为这个独立性, activity可以以不同的方式被其它的 activity进行替换。 ORACLE EBS 价目表的导入功能-存储过程BUG

比如打电话的应用程序就包含了四个 activity:打电话、联系人列表、查看联系人、添加联系人,如下图:

    Android开发者指南Activity and Task Designhttp://api.d-android.com/images/activity_task_design/ContactsList.pnghttp://api.d-android.com/images/activity_task_design/ContactView.pnghttp://api.d-android.com/images/activity_task_design/ContactNew.png

打电话 联系人列表 查看联系人 添加联系人

下面的应用程序同样也包含了很多 activity

* 邮件 - 查看文件夹、邮件列表、邮件,发送邮件和设置邮件账号。

* 日历 - 查看天、星期、月、议程,编辑事件、首选项。

* 照相机 - 运行照相机、查看图片列表、图片,编辑图片,运行录像机,查看录像列表和录像。

* 游戏 - 玩游戏和安装游戏。

* 地图 - 查看地图上的位置,查看朋友的位置以及他们的详细信息(朋友的位置、状态、照片)。

Activity Android应用中最为突出的组件,其余组件分别为: service content provider broadcast receiver。更多 activities的详情,参见 Application Components

Activity Stack

用户之所以能够从一个 activity转到下一个 activity,是因为 Android系统针对 activity而设计了一个线性的导航历史以供用户追溯访问,这就是 activity栈,也称为 back stack。当用户启动了一个新的 activity,它就被添加进 activity栈,以便按 BACK键时能够返回到上一个 activity。然而,用户不能按 BACK键就直接返回到桌面(除非 activity的前一个是桌面才可以)。

activity 栈里面存放的只能是 activity,而视图、窗体、菜单和对话框则不能。也就是说,如果你可以让用户从屏幕 A跳转到屏幕 B,当用户按 BACK键时,他就应该会回到屏幕 A,那屏幕 A必须是一个 activity。有个例外情况就是,你的应用程序需要利用 BACK键控制自身的导航,那就要自己重新设定 BACK键的导航功能。

Tasks

任务则是一系列的 activity集合,它能使用户完成既定的操作,而又不用去关心这些 activity是哪个应用程序里面的,除明确指定一个新任务之外(参见“中断任务”小段),那么其他 activity都属于当前任务的一部分。再次注意的是,这些 activity可是任意应用程序中的其中一个,也就是说不管它们所属的应用程序是否相同。举个例子,用户打开了联系人的程序,任务随之也会启动,他选择了 email地址准备发邮件,这时跳转到了 email activity,之后他要添加附件,需要在画廊中挑选图片。这里面,联系人, email,图片画廊都是不同的应用程序。

当一个 activity启动时,任务也随之启动的话,那个 activity就是根 activity。启动 activity一般有这么几种方式,应用程序发射器、桌面快捷方式、最近任务切换器。 Android系统内部一旦有任务,那么按 BACK键就可以回到上一个 activity Activity栈可以是多个任务的组成部分。

下面是关于任务的例子,以供参考:

* 发送文本消息并含有附件

* 观看 YouTube视频并以邮件的方式向其他人分享。

中断任务 ——任务中有一个重要特性就是能使用户中断当前正在做的操作(他们的任务)而去执行其它操作,当然他们也可以回到之前的任务上,也就是说支持同时运行多任务并且来回切换它们。

这里有两种情况来开始其它任务,并且都可以返回到原先的任务上。

* 打开通知:用户接收到通知并打开查看它。

* 用户转去做其它操作:用户在桌面启动。

当然,也有例外的。 除了刚才提到的两种方式, 另外还有一种打开新任务的情况,就在其内部开启一个 activity。例如,在邮件中以新任务的方式打开地图 activity或是打开一个浏览器 activity,当按 BACK键时就又会回到邮件 activity中。

Activities Tasks 之旅

下面的例子阐述了应用程序的基本原则,主要有 activities activity栈,回退键,任务和意图;并展示了系统是如何响应用户请求的,例如用户开始了一个应用程序,用户不断的切换 UI,程序内部就是利用在不同任务之间切换 activities的。下面的许多例子你都可以在 Android手机上运行起来。

在桌面上开始一个 Activity

桌面是启动应用程序的主要地方,比如在桌面上点击应用程序图标就能将其打开,用户第一眼看到的就是应用程序中的主 activity。如下图,所描述的是用户在桌面点击 Email图标所发生的事情:

Android开发者指南Activity and Task Design

BACK HOME 键进行导航

Activity保持或者丢掉其状态完全取决于用户是怎样离开这个 activity ——使用 HOME键还是 BACK键。

默认情况下,按下 BACK键来结束(销毁)当前 activity并为用户显示上一个 activity。例如下图,用户在桌面上打开了邮件,当前 activity显示着邮件列表。用户将列表滚动条往下拉以便看到后面的邮件,这时用户按了 BACK键,那么 Android就会销毁这个邮件信息列表 activity并返回之前的 activity(桌面)。然后用户又重新打开邮件,还是那个列表,但是滚动条又回到了起始位置上。

Android开发者指南Activity and Task Design

上面的例子中,当按下 BACK键就返回到了桌面,由于那是用户在上一次看到的 activity。不过如果用户从其他 activity里面跳转到邮件列表,然后按下 BACK键则回到了先前的那个 activity(这里只是说明一下 BACK键的作用)。

相比之下,下面的图就是用 HOME键离开邮件列表 activity而不是 BACK键,那么当前 activity就呈 stop状态并移置后台而不是销毁。当再次打开邮件列表 activity时状态保持不变。

Android开发者指南Activity and Task Design

其它情况:有些应用程序则不是如上面所说的那样。例如联系人和画廊,用户在桌面打开联系人后查看了某个联系人的资料,接着再次打开联系人时,就不会显示之前的 activity了。这是因为联系人的主 activity有四个标签,是为了让用户能够看到全部的功能特性。

此外,也不是所有 activity都是当按下 BACK键之后销毁掉的。例如用户开始播放音乐,接着按下 BACK键,却不会影响音乐的播放。即使它的 activity不再可见,音乐应用程序依然会在状态栏上提示着用户。注意:你也可以让 activity不再可见时停止掉或是继续在后台运行 ,但后者更适合像音乐这样的应用程序。

重用 activity

有两个应用程序中,它们分别也有两个 activity activity A activity B A的部分功能需要调用 B的已实现功能,那么 B就叫被重用。

联系人重用画廊来获取图片 联系人 activity中会有联系人的照片,但是照片一般存放在画廊里面,所以联系人要重用画廊的功能来获取图片,画廊 activity就是重用的绝佳例子。下面的图画出了重用的流程 具体流程是这样的:用户打开了联系人,查看某一个联系人的资料并想编辑他的照片,这时,打开了画廊 activity,对图片进行设置并保存,那个联系人的图片也就相应的改变了。

注意画廊最终会返回给联系人一张图片。 下一个例子讲述一个 activity的重用并且不返回任何结果。同样需要注意下面的插图是说明通过 activity或是 activity栈来实现历史导航——用户可以通过每个 activity用任何方式回到桌面。

当开始设计一个应用程序时,一个不错的想法就是怎样能够在重用其它应用程序中的 activity或是你的 activity怎样被其它应用程序重用。如果用一样的 intent filter(已经存在了一个 activity)再添加一个 activity,那么系统会为用户显示出一个选择 UI,供用户选择使用那个 activity

更多相关文章

  1. 在 Android 上使用 XML 和 JSON,第 1 部分: 在 Android 应用程序
  2. Android中读取电话本Contacts联系人的所有电话号信息
  3. Android应用程序通过JNI控制LED
  4. mk中的 android:sharedUserId和LOCAL_CERTIFICATE作用 应用程序
  5. 在android虚拟机中安装删除应用程序
  6. Android 应用程序权限

随机推荐

  1. Skype 视频电话功能终于支持更多 Android
  2. 编程回忆之Android回忆(Android 连接到web
  3. Android 学习经验之分享
  4. Android:浅谈app加载H5
  5. Android 面试笔试集锦 --- 基本知识点 整
  6. Android屏幕截图实现
  7. android电池管理系统
  8. 深入剖析Android四大组件(三)——AIDL实
  9. android 点击桌面图标,打开手机浏览器进入
  10. android seekbar使用