Я тоже сталкивался с этой проблемой, и с помощью предыдущих комментариев и небольшого количества копаний я нашел решение.
Если вы не хотите, чтобы уведомления обновлялись при обновлении, или постоянно перегружали строку состоянияустройства, вы должны:
- Использовать setOnlyAlertOnce (true) на компоновщике
- Использовать один и тот же построитель для каждого обновления.
Если вы используетекаждый раз новый строитель, тогда я предполагаю, что 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());
}
}
С учетом вышеизложенногокод, вы можете просто вызвать updateNotification (String, int) с сообщением и прогрессом (0-100), и он обновит уведомление, не раздражая пользователя.