前面关于Notification的介绍已经能完成大部分的功能,这篇主要记录一下,看到但是暂时还没用的上知识点和功能。

  一、对于一个app,notification的区别是由id或者id与tag组成的一个对,作为唯一的notification标识。

 * Each of the notify methods takes an int id parameter and optionally a
 * {@link String} tag parameter, which may be {@code null}.  These parameters
 * are used to form a pair (tag, id), or ({@code null}, id) if tag is
 * unspecified.  This pair identifies this notification from your app to the
 * system, so that pair should be unique within your app.  If you call one
 * of the notify methods with a (tag, id) pair that is currently active and
 * a new set of notification parameters, it will be updated.  For example,
 * if you pass a new status bar icon, the old icon in the status bar will
 * be replaced with the new one.  This is also the same tag and id you pass
 * to the {@link #cancel(int)} or {@link #cancel(String, int)} method to clear
 * this notification.

 

  从中,我们可以看到,对于新建,还是更新已有通知,Android并不是用方法去区分,而是用notification的id去区分的

 

  二、对于新建与更新notification

  在Notification类中,有一个内部类Builder,这个类能构帮我们构造通知。

  eg:

    NotificationManager notificationManager;
    Notification.Builder notificationBuilder;
    Notification notification;
    notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationBuilder = new Notification.Builder(this);
    notificationBuilder.setVibrate(new long[]{100,200,100,200});
    notificationBuilder.setContentTitle("hi~");
    notification = notificationBuilder.build();

  如上的代码即是利用 Notification.Builder创建了一个Notification,并设置了它的振动和Title;有了这个Notification之后,就可以轻松地:

  notificationManager.notify(111 , notification);

 

  其中111就是我随便敲的id。

  notificationBuilder中还有很多属性可以设置,在此不一一列举(以后可能会加在附录)。

  上面说的是新建。

  如果我想修改notification的属性,再重发一次。网上有些博客写的方法是

notification.setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent);

  我在Notification的代码中还能找到这个方法,但是这个方法已经被废弃了。

 

     * If this is an activity, it must include the
     * {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} flag, which requires
     * that you take care of task management as described in the
     * <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
     * Stack</a> document.
     *
     * @deprecated Use {@link Builder} instead.
     * @removed
     */
    @Deprecated
    public void setLatestEventInfo(Context context,
            CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent) {
        Notification.Builder builder = new Notification.Builder(context);

 

  新的版本中,修改Notification依旧使用Builder类。build一个新的notification,只要id和tag一样,notify()出去的也只是更新当前的。

 

暂时这些,学到再加。。。

posted on 2015-11-22 23:37  Fishbonell  阅读(282)  评论(0编辑  收藏  举报