Android文档笔记:通知(二)

来源:互联网 发布:服务器端口开启 编辑:程序博客网 时间:2024/06/09 17:31
管理通知

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

- 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来开始新的任务,同时要提供给它一个backstack以重现在应用程序中正常的回退行为。

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

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

特殊活动

原创粉丝点击