我也经历过这个问题,在先前的评论和一些挖掘的帮助下,我找到了解决方案。
如果您不希望在更新时闪烁通知,或者不断地占用设备的状态栏,您必须:
如果你每次都使用一个新的构建器,那么我猜测Android必须重新重建视图,导致它暂时消失。
一些好代码的例子:
class NotificationExample extends Activity { private NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this); private mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //Different Id's will show up as different notifications private int mNotificationId = 1; //Some things we only have to set the first time. private boolean firstTime = true; private updateNotification(String message, int progress) { if (firstTime) { mBuilder.setSmallIcon(R.drawable.icon) .setContentTitle("My Notification") .setOnlyAlertOnce(true); firstTime = false; } mBuilder.setContentText(message) .setProgress(100, progress, true); mNotificationManager.notify(mNotificationId, mBuilder.build()); } }
使用上面的代码,您可以使用消息和进度(0-100)调用updateNotification(String,int),它将更新通知而不会使用户烦恼。
您应该更新现有通知 https://developer.android.com/training/notify-user/build-notification.html#Updating
试试这个
int id = (int) Calendar.getInstance().getTimeInMillis();
在notify()方法中使用此id。 Android系统本身的时间会创建一个唯一的ID
这对我有用,因为正在进行的活动(而不是服务)通知会“无声地”更新。
NotificationManager notifManager; // notifManager IS GLOBAL note = new NotificationCompat.Builder(this) .setContentTitle(YOUR_TITLE) .setSmallIcon(R.drawable.yourImageHere); note.setOnlyAlertOnce(true); note.setOngoing(true); note.setWhen( System.currentTimeMillis() ); note.setContentText(YOUR_MESSAGE); Notification notification = note.build(); notifManager.notify(THE_ID_TO_UPDATE, notification );