cot*_*aws 17 android android-notifications android-4.2-jelly-bean
之前Notification.Builder进入了存在更新的方式通知了已被通知栏是调用setLatestEventInfo(),然后发送通知回通过NotificationManager.notify()与第一相匹配的ID调用notify()你做电话.
现在setLatestEventInfo()不推荐使用消息:Use Notification.Builder而是.但我找不到任何有关如何正确更新通知的文档Notification.Builder.
您是否只是想在Notification每次需要更新通知时重新创建新实例?然后简单地将其传递给NotificationManager.notify()您之前使用的ID?
它似乎工作,但我想看看是否有人有任何官方验证,这是新的"这样做的方式"?
我之所以要问这是因为在Android 4.1.1 Jelly Bean,每次notify()调用通知都会闪现.更新进度条时,setProgress()这看起来非常糟糕,并且很难点击通知.4.1或以前的版本不是这种情况.因此,我想确保在提交错误之前正确执行此操作.
dbr*_*bro 20
我通过调用setWhen(0)Notification.Builder 解决了这个问题.似乎Android的此参数的默认值不适合更新通知视图的位而没有整个通知淡出/输入.
Notification.Builder builder = new Notification.Builder(c)
.setContentTitle("Notification Title")
.setSmallIcon(R.drawable.ic_notification_icon)
.setProgress(max_progress,current_progress,false)
.setWhen(0);
notification = builder.getNotification();
mNotificationManager.notify(NOTIFICATION_ID, notification);
Run Code Online (Sandbox Code Playgroud)
正如WolframRittmeyer所说,使用when=0并不是一种优雅的方式.我形成了如下解决方案:
if(mNotif == null) {
//either setting mNotif first time
//or was lost when app went to background/low memory
mNotif = createNewNotification();
}
else {
long oldWhen = mNotif.when;
mNotif = createNewNotification();
mNotif.when = oldWhen;
}
mNotificationManager.notify(NOTIFICATION_ID, mNotif);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4501 次 |
| 最近记录: |