已更新 - 找出此问题的根本原因。我们将正常通知显示为抬头通知,如下所示:
if (Build.VERSION.SDK_INT >= 21) {
notificationBuilder.setVibrate(new long[0]);
}
前台服务通知不是抬头,因为它每30秒建立一次通知,我们不想要这种行为。如果我删除了设置正常通知的Heads up通知的代码,那么它可以正常工作。
原始问题:
我们的应用程序有一个前台服务,用于通过正在进行的notification
显示板球比赛的持续得分更新。我们每隔30秒就会点击服务器API并更新notification
。我们正在以最高优先级2构建此通知。
现在每当出现相同优先级的另一个正常notification
时,正常通知就会出现在前台服务通知之上。但是,由于我们每隔30秒就建立一次前景通知,所以它再次出现在最前面。
这适用于Marshmallow和OS以下。但是在Nougat及以上版本中,一旦出现新的通知,前台服务通知就永远不会出现。这是我为构建通知而编写的代码。
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(R.mipmap.app_notification_icon);
builder.setContentIntent(targetIntent);
builder.setDeleteIntent(dismissedIntent);
builder.setCustomBigContentView(remoteViews);
builder.setContent(remoteViews);
builder.setPriority(2);
Notification notification = builder.build();
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
notification.flags |= Notification.FLAG_ONGOING_EVENT;
有没有人遇到过类似的问题?如何在Nougat及以上操作系统上始终保持前台服务通知的最佳状态。
有一个应用Universal Music App,其中通知始终位于顶部。当有新通知出现时,它们会停止运行,但随后会再次回到顶部。