Android官方文档之Activity和Task(4)
Contacts重用了Gallery来取图片 - Contacts Activity有一块区域用来显示联系人的图片,而一般来说,所有的图片都保存在Gallery里。 于是Contacts可以重用Gallery Activity来取图片。 这是一个重用Gallery Activity的很好的例子。 下面的图表说明了这个流程(主要部分)。 流程是这样的:用户点击Contacts,然后点选一个联系人查看详细资料,按MENU键,编辑联系人,点击图片区域, 于是就会启动Gallery Activity。用户找到想要的图片后,裁剪并保存。保存这个动作,会导致图片被插入到联系人详情的图片区域中。
Gallery会返回图片给启动自己的Contact Application。 下面一个例子说明了重用Activity但没有返回的情况。 还要注意下面的图标是一个对Activity导航历史(即Activity栈)的说明。用户可以一直按BACK直到回到主屏。
设计Application的时候,考虑如何能够重用其他Application中的Activity, 以及考虑自己的Activity如何被其它Application重用,是一个很好的思路。 如果你的Activity拥有一个和已存在的Activity一样的Intent Filter, 系统会提供给用户一个对这些Activity的选择界面。
Gallery重用Messaging来分享图片 - Sharing is 分享图片是另一个很好的关于在不同的Application重用Activity的例子。 如下图所示,用户启动Gallery,选一个图,按MENU键,选Share,选Messaging。 这就会启动Messaging Activity,然后建立一个新的消息并把图片附在上面。 然后用户填写“收件人”、写个短消息然后发送。 用户的关注点现在在Messaging程序上。 如果用户想回到Gallery,他必须按BACK键。(用户可以通过BACK键从任何一个Activity一路返回到主屏。)
与上一个例子不同,这个对Messaging Activity的重用什么都没有返回给启动它的Gallery Activity。
两个例子实际上都说明了Task — 为了完成一个目标的一系列Activity。 每个例子都是用了来自不同的Application的Activity来完成任务。
代替一个Activity
下面这个情况,是Activity A在不同的Application里代替了Activity B。 这种情况一般发生在Activity A做某项工作比Activity B好的时候。 换句话讲,A的功能足够代替B。 与重用不同的是,重用的时候,A和B做的是不同的事情。
在本例中,用户下载了一个PhoneRingtone Activity的替代品,叫做RingsExtended。 现在,当用户进入Setting,SoundDisplay,PhoneRingtone,系统会提供一个选择界面,让用户选择是使用Android系统的电话铃Activity还是新的这个。 这个对话框有一个多选框,让用户可以选择“这种情况下默认使用这个选项”。 用户选了RingsExtended,然后新的Activity被启动,代替了原来的Android系统电话铃Activity。
多Task
上面说过,用户可以从一个Activity通过HOME切到主屏,然后进入另一个Activity,而前一个Activity不会被销毁。 下面演示了进入Map Application的情况。
State 1 - 用户进入ViewMap Activity,搜索一个地址。假设网络非常慢,应用需要异常长的时间来搜索。
State 2 - 用户想在等待的时候做一些其它事情,所以他按HOME键,离开Map,但是没有打断网络连接。现在Map在后台继续工作。
注意,你可以自己决定,在程序被挪到后台后,是继续运行还是停止。 (参考onStop(),Activity生命周期)。 对于从网络上下载数据这类Activity来说,建议还是让它们在后台的时候,继续工作。用户就可以多任务了。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>