如何在remoteViews中使用Glide?

我正在使用Glide从服务器的所有加载图像,但我有故障排除试图设置它们以正确的方式通知和RemoteControlClientCompat(这是一个很酷的东西与锁屏)。 我正在开发音乐播放器,所以每当歌曲改变时,通知中的歌曲封面也必须改变。 我有这个代码,它第一次工作(如果图像是从url或可绘制加载),但不是当它第二次调用。 图像不会改变! 当歌曲改变时,CustomNotification被调用。 并且在启动活动中调用RegisterRemoteClient。

如果这不是正确的方法,请告诉我如何。

public void CustomNotification() { Log.d(TAG, "Set custom notification"); simpleRemoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notification_custom); expandedRemoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notification_big); mNotification = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.mipmap.ic_main_logo) .setTicker(mSongTitle + " - " + mSongAuthors) .setContentTitle(mSongTitle).build(); setRemoteListeners(simpleRemoteView); setRemoteListeners(expandedRemoteView); try { //Check if playingSong has a cover url, if not set one from drawable if(!playingSong.has("cover")){ mDummyAlbumArt = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album); mDummyAlbumArt2 = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album); mDummyAlbumArt3 = BitmapFactory.decodeResource(getResources(),R.drawable.image_song_album); }else { Glide.with(MainActivity.context) .load(API.imgUrl(playingSong.getString("cover_img"))) .asBitmap() .into(new SimpleTarget<Bitmap>(100, 100) { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { mDummyAlbumArt = bitmap; mDummyAlbumArt2 = bitmap; mDummyAlbumArt3 = bitmap; } }); } } catch (JSONException e) { e.printStackTrace(); } mNotification.contentView = simpleRemoteView; mNotification.contentView.setTextViewText(R.id.textSongName, mSongTitle); mNotification.contentView.setTextViewText(R.id.textAlbumName, mSongAuthors); mNotification.contentView.setImageViewBitmap(R.id.imageViewAlbumArt, mDummyAlbumArt); if (currentVersionSupportBigNotification) { mNotification.bigContentView = expandedRemoteView; mNotification.bigContentView.setTextViewText(R.id.textSongName, mSongTitle); mNotification.bigContentView.setTextViewText(R.id.textAlbumName, mSongAuthors); mNotification.bigContentView.setImageViewBitmap(R.id.imageViewAlbumArt, mDummyAlbumArt2); } if (mPlayer != null) { if (!mPlayer.isPlaying()) { mNotification.contentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.play); if (currentVersionSupportBigNotification) { mNotification.bigContentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.play); } } else { mNotification.contentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.pause); if (currentVersionSupportBigNotification) { mNotification.bigContentView.setImageViewResource(R.id.btnPlayPause, R.mipmap.pause); } } } mNotification.flags |= Notification.FLAG_ONGOING_EVENT; if(currentVersionSupportBigNotification) { //As priority_max only suported on API 16, the same as big notification mNotification.priority = Notification.PRIORITY_MAX; } startForeground(NOTIFICATION_ID, mNotification); //update remote controls if (currentVersionSupportLockScreenControls) { remoteControlClientCompat.editMetadata(true) .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, mSongTitle + " - " + mSongAuthors) .putBitmap(RemoteControlClientCompat.MetadataEditorCompat.METADATA_KEY_ARTWORK, mDummyAlbumArt3) .apply(); } } public void setRemoteListeners(RemoteViews remoteViews){ Log.d(TAG,"Setting remote listeners"); PendingIntent piAppActivity = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piPlayPause = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_TOGGLE_PLAYBACK), PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piNext = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_SKIP), PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piClose = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_STOP), PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piPrevious = PendingIntent.getService(this, 0, new Intent(MusicService.ACTION_PREVIOUS), PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.linearLayoutNotification, piAppActivity); remoteViews.setOnClickPendingIntent(R.id.btnPlayPause, piPlayPause); remoteViews.setOnClickPendingIntent(R.id.btnNext, piNext); remoteViews.setOnClickPendingIntent(R.id.btnDelete, piClose); remoteViews.setOnClickPendingIntent(R.id.btnPrevious, piPrevious); } private void RegisterRemoteClient(){ // Use the media button APIs (if available) to register ourselves for media button // events MediaButtonHelper.registerMediaButtonEventReceiverCompat(mAudioManager, mMediaButtonReceiverComponent); // Use the remote control APIs (if available) to set the playback state if (remoteControlClientCompat == null) { Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); intent.setComponent(mMediaButtonReceiverComponent); remoteControlClientCompat = new RemoteControlClientCompat(PendingIntent.getBroadcast(this /*context*/,0 /*requestCode, ignored*/, intent /*intent*/, 0 /*flags*/)); RemoteControlHelper.registerRemoteControlClient(mAudioManager,remoteControlClientCompat); } remoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING); remoteControlClientCompat.setTransportControlFlags( RemoteControlClient.FLAG_KEY_MEDIA_PAUSE | RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS | RemoteControlClient.FLAG_KEY_MEDIA_NEXT | RemoteControlClient.FLAG_KEY_MEDIA_STOP); }