您的位置:首页 > 移动开发 > Android开发

Android文档笔记:通知(二)

2013-04-18 16:59 197 查看
管理通知

- 复用:

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

- 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屏,而不会回退到之前的书写屏。我认为,原因在于,书写和后来打开邮件这两个操作并不在同一个任务中。

特殊活动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: