Android文档笔记:通知(二)

原文地址: http://blog.sina.com.cn/s/blog_597a014f01018xs7.html


管理通知


复用:
当你需要为同一类型的时间多次发送通知的时候,切忌每次都创建新的实例。繁殖,应当考虑对先前使用的通知实例进行更新,添加或修改一些设定值。

- Gmail:
当新邮件到来,Gmail会在通知中递增邮件数量并显示每封邮件的摘要。这称为“堆积”通知。参见通知设计向导。

更新通知

- 已经发起的通知拥有一个ID
- 更新或者创建一个NotificationCompat.Builder,然后构建一个Notification对象,用同样的ID发送之。此时,如果对应ID的通知已经存在,那么更新它;否则,创建新的通知。
- 代码实例:
mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
mNotifyBuilder = new NotificationCompat.Builder(this)
    .setContentTitle("New Message")
    .setContentText("You've received new messages.")
    .setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;
// Start of a loop that processes data and then notifies the user
...
    mNotifyBuilder.setContentText(currentText)
        .setNumber(++numMessages);
    // Because the ID remains unchanged, the existing notification is
    // updated.
    mNotificationManager.notify(
            notifyID,
            mNotifyBuilder.build());


- 它的效果如图:

移除通知

通知保持可见,直到下列事件之一发生:
- 用户清除了通知:逐条删除或者通过“清除全部”命令
- 用户点击了通知,并且在创建通知之初调用了setAutoCancel()方法
- 你对指定的ID调用了cancel()方法。此方法同样会删除进行中的通知。
- 你调用了cancelAll()方法。这将移除你之前发出的所有通知

------------------------------------------------------------------------------------
启动活动时保存导航

- 当你从一个通知启动活动时,你必须保留用户所希望的导航体验:
> 按回退键应当通过应用正常的工作流将用户带回到Home屏。
> 点击“最近使用”则会将刚才启动的活动显示为一个单独的任务。

- 要做到这一点,应当从一个全新的任务来启动活动
- 如何配置PendingIntent来得到一个全新的任务?这取决于你的活动的性质:

常规活动:
- 这指的是,你启动的活动是应用程序正常工作流的一部分。此时,创建一个PendingIntent来开始新的任务,同时要提供给它一个back stack以重现在应用程序中正常的回退行为。

- 如在Gmail应用中,如果通过通知栏打开单封邮件,系统会首先进入Gmail,显示邮件列表再打开对应的邮件。用户回退时也要路过这些打开的活动。

-  这与你当前是否恰好在那个应用之中没有关系。例如,你正在Gmail中书写一封邮件,此事通过通知栏点开一封邮件,所经历的回退顺序仍然是打开的邮件->收件箱->Home屏,而不会回退到之前的书写屏。我认为,原因在于,书写和后来打开邮件这两个操作并不在同一个任务中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值