Android 通知未更新
我正在尝试更新通知,但无法更新,以下是我的代码:Android 通知未更新,android,android-notifications,Android,Android Notifications,我正在尝试更新通知,但无法更新,以下是我的代码: NotificationCompat.Builder nBuilder; RemoteViews remoteView; static NotificationManager nManager; static int NOFIY_ID = 2; static Bitmap bitmap2; static boolean isExists2; public void MakeNotification(Context context,St
NotificationCompat.Builder nBuilder;
RemoteViews remoteView;
static NotificationManager nManager;
static int NOFIY_ID = 2;
static Bitmap bitmap2;
static boolean isExists2;
public void MakeNotification(Context context,String Name,String AlbumART) {
if(Added_RvHolders.isPlaying)
Added_RvHolders.mMediaPlayer.stop();
if(!AlbumART.equals("")) {
Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, Long.parseLong(AlbumART));
try {
bitmap2 = MediaStore.Images.Media.getBitmap(
context.getContentResolver(), albumArtUri);
isExists2 = true;
} catch (IOException e) {
isExists2 = false;
}
} else {
isExists2 = false;
}
if(IsFirstTime) {
nBuilder = new NotificationCompat.Builder(context)
.setAutoCancel(true)
.setOnlyAlertOnce(true)
.setSmallIcon(R.mipmap.small_app_icon)
.setOngoing(true);
remoteView = new RemoteViews(context.getPackageName(), R.layout.music_notification);
}
if(isExists2)
remoteView.setImageViewBitmap(R.id.AlbumART, bitmap2);
else
remoteView.setImageViewResource(R.id.AlbumART,R.mipmap.main_app_icon);
remoteView.setTextViewText(R.id.TrackTitle,Name);
//set the button listeners
setListeners(remoteView, context);
nBuilder.setContent(remoteView);
nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
nManager.notify(NOFIY_ID, nBuilder.build());
}
出了什么问题:
在选择另一首歌曲时,它没有被更新,在“OnClick”方法中,我传递了新的名称/封面艺术,但它没有更新,即使我试图“取消”通知并再次发出,仍然是在相同的信息上
我在期待什么
当按下一首新歌时,通知会被更新。除了使用同一个构建器外,您不能将构建器设置为静态,或者remoteview,删除静态解决了我的问题。可能重复Nope,它不是重复的,因为我正在按照答案所说的做,您的代码显示您正在重用NotificationCompat.Builder实例并创建一个新的Notification实例。另一个问题的答案建议使用相同的通知实例。所以在我看来,这可能是一个复制品。请注意我评论中的“可能”一词:)这很好。因此,这确实不是重复。你为什么不自己写答案呢?它可能对其他有同样问题的人有用。您可能不应该将这么多对象声明为静态对象,也许可以像这样重新审视您的设计。。是有问题的。为了避免任何误解(我不是母语人士):让同一个构建器先创建一个通知,然后再创建另一个通知是可以的,但我不应该使用静态变量?有些变量需要声明为静态的,比如MediaPlayer,正如一些人所说的“它将创建实例”,如果你尝试使用MediaPlayer实例停止并播放另一首歌曲,它将恢复上一首歌曲并播放新歌曲,要解决这个问题,你需要将其声明为静态(检查我之前的问题,你就会明白),我不能用专业的方式回答你,我还是一个初学者。没关系,我只是想知道“旁边”-就像我说的,我不是母语人士,一种解释是我可能永远不会重用构建器,另一种解释是我第一次评论时的解释。翻译问题,而不是编码问题;)哦,对于“旁边”,你给我的链接建议使用同一个构建器来解决提问者问题,所以“旁边/与”“这意味着,如果从生成器中找到,您还需要删除static:)。