在Notification.Builder中setGroup()的目的是什么?

时间:2016-05-11 12:51:33

标签: android android-notifications

我对了解setGroup()方法的目标有些麻烦。

正如文档所说:

  

...分组通知可能会显示在支持此类渲染的设备上的群集或堆栈中....

这是第一个问题:

这个渲染是什么?它有什么特别之处?!

我创建了一个显示自定义短信的方法:

    public static void showNotification(Context context, String title, String message, PendingIntent pendingIntent) {
        notificationMessages.add(message);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
//                .setGroupSummary(true)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentInfo("" + (notificationMessages.size()))
                /*.setGroup(++i + "")*/;

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

        inboxStyle.setBigContentTitle(title);
        for (int i = 0; i < notificationMessages.size(); i++) {
            inboxStyle.addLine(notificationMessages.get(i));
        }

        builder.setContentIntent(pendingIntent);
        builder.setStyle(inboxStyle);

        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = builder.build();
        mNotificationManager.notify(0, notification);
    }

并使用notificationIDsetGroupsetGroupSummary方法进行游戏。

    public static void showNotification(Context context, String title, String message, PendingIntent pendingIntent) {
        notificationMessages.add(message);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
//                .setGroupSummary(true)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentInfo("" + (notificationMessages.size()))
                .setGroup(GROUP_KEY);

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

        inboxStyle.setBigContentTitle(title);
        for (int i = 0; i < notificationMessages.size(); i++) {
            inboxStyle.addLine(notificationMessages.get(i));
        }

        builder.setContentIntent(pendingIntent);
        builder.setStyle(inboxStyle);

        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = builder.build();
        mNotificationManager.notify(new Random().nextInt(3), notification);
    }

但是,没有视觉上的变化 如果我评论或不评论。因此,对于理解这种方法的目的,这是困难的。

2 个答案:

答案 0 :(得分:3)

来自官方文档:

http://developer.android.com/preview/features/notification-updates.html

  

Android N还允许您将类似的通知捆绑显示为单个通知。为了实现这一点,Android N使用现有的NotificationCompat.Builder.setGroup()方法。用户可以展开每个通知,并从通知阴影中单独执行每个通知的回复和解除等操作。

意味着setGroup只会在设备支持时产生影响。

支持它的设备是:

  • Android Wear设备。在显示远程通知时,您可以将它们组合在一起
  • Android N.设备运行Android N开发者预览版(或将来的官方N版),将一起显示一组通知

以下博客文章展示了这些如何在Android N上运行:https://medium.com/exploring-android/android-n-introducing-upgraded-notifications-d4dd98a7ca92

贝洛是一个群组的渲染图:

enter image description here

这意味着setGroup对于运行API23以下的任何设备(包括Marshamallow,Lollipop,KitKat等)没有任何影响。

答案 1 :(得分:0)

setGroupSummary在牛轧糖之前支持设备上的分组通知。它将单个通知替换为1个摘要通知。 在Nougat +上,系统创建一个普通组,该组不是您的setGroupSummary(true)

通知