我需要显示通知并在其生命周期内更新它 . 特别是,我需要更改某些标志,例如"show chronometer" . 为此,文档声明我们应该使用相同的id调用 NotificationManager.notify()
.
所以我的想法是拥有这些方法:
private void showInitialNotification() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
private void addChronometerFlag() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setUsesChronometer(true);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
private void removeChronometerFlag() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setUsesChronometer(false);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
这在Android 5.1和6.0中完全正常,但 in Android 4.4 (及以下,我猜?) the chronometer is not removed ,尽管内容 Headers ,文本,图标和c都已正确更新 .
知道为什么吗?
我不能使用相同的 Notification.Builder
对象(例如this answer中建议的那样),因为我还需要更新通知上可用的操作,并且无法将以前添加的操作删除到Builder .
我的用例有点复杂(它已经能够重现了 . 它's also present, for example, in Google' s UniversalMusicPlayer样本 - 在Lollipop中工作正常,但在KitKat中没有 .
FWIW,完整的示例代码是here .