Android官方文档之Activity和Task(8)

来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:44 点击:

Contacts和Dialer实际上也是这种情况,在同一个Application的两个主Activity。
把你的Application做成一个Widget - 一个Application也可以把它自己的一部分作为一个AppWidget来展示,嵌入到主屏,或者其它的应用,并周期性地接收更新。
要允许你的Activity进入当前的Task。(而不是新建一个Task)。
如果你的Activity能够被其他Application启动的话,应该允许它们进入到当前Task, 或者一个有TaskAffinity的已经存在的Task。 让Activity能够被加到Task里去,可以让用户在包含你的Activity的Task和其它Task之间切换。 除非你的Activity只允许一个实例。
要达到这种效果,你的Activity的LaunchMode应该是standard或者singleTop,而不是singleTask或者singleInstance。 这些LaunchMode(standard或者singleTop)允许你的Activity有多个实例。
Notification应该能够让用户轻易地返回上一个Activity。
后台运行的应用,可以用一个Service来向用户发送Notification,让他们知道他们感兴趣的事件。 Calendar和Email是两个例子。Calendar会发送Notification作为闹铃提醒,而Email会发送Notification来提醒用户新邮件。 建议,当用户在ActivityA,收到了一个Notification,通过这个Notification进入到ActivityB,再按BACK键时,应该回到ActivityA。
下面的流程展示了,当用户处理一个Notification的时候,ActivityStack会如何工作。
用户在Calendar中新建一个提醒事件,然后发现需要从某封电邮中复制些内容进来。
用户点击HOME > Gmail。
在Gmail里,用户收到了一个从Calendar来的Notification,提醒他马上要开一个会。
用户选择这个Notification,于是用户进入了另一个CalendarActivity,这个Activity显示了这个会议的细节摘要。
用户选择了这个提醒,想看更多的细节。
看完这个事件后,用户按BACK键。回到了Gmail,即是他刚刚离开去看Notification的地方。
上述行为并不是必须的。
Notification一般来说通过下述方式之一来实现:
展示出来的Activity仅仅是为了Notification服务的。 - 例如,当用户收到一个Calendar的Notification,选择这个Notification会启动一个特殊的Activity。 这个Activity展示了一个即将到来的事件的列表 — 这个视图仅仅是为了展示Notification用的, 在Calendar自己的UI中,没有入口。 当看完最近事件列表后,要保证用户可以通过BACK键来回到他刚才点击Notification时的Activity。 你应该保证这个专用的Activity的TaskAffinity与Calendar或者其它任何一个Activity的不同。 (要做到这一点,设置TaskAffinity为空字符串就行了,标示这个Activity跟任何其它任务无关)。 下面是解释。
由于Task的工作方式,如果这个专用Activity的TaskAffinity保持默认的话,在上面的第6步按BACK键后, 会回到Calendar,而不是Gmail。 原因是,默认情况下,同一个Application的所有Activity有同一个TaskAffinity。 因此,这个专用的Activity的TaskAffinity会匹配第1步的那个Calendar的Task。 这意味着,选Notification会把已存在的Calendar事件(第1步的那个)拉到前面, 然后把这个专用Activity放到最上面。 这个不是你想要的。把这个专用Activity的TaskAffinity设成空字符串就能修正这个问题。
展示出来的Activity并不是专用的,但是一旦出现到前台就是初始化状态。 - 例如,在响应Notification的时候,当Gmail到前台,它总是会显示会话列表。 你可以通过把“clear top”flag放到notification的触发intent里来保证这个。 这种做法 - 启动Activity,这个Activity总是展示初始化状态 - 防止了当Gmail进入前台时处于用户离开时的状态。 (你可以把 FLAG_ACTIVITY_CLEAR_TOP放到传递到StartActivity()的Intent来做到这一点)。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1