Как использовать Glide в remoteViews?

Я использую Glide для всей загрузки изображений с сервера, но у меня возникают проблемы при попытке установить их правильно для уведомлений и RemoteControlClientCompat (это крутая вещь с экранами блокировки). Я занимаюсь разработкой музыкального плеера, поэтому каждый раз, когда песня меняется, обложка песни из уведомлений должна меняться. У меня есть этот код, и он работает в первый раз (хотя изображение загружается из url или из drawable), но не тогда, когда он вызывается во второй раз. Изображение не меняется! 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);
}

Ответы на вопрос(1)

Ваш ответ на вопрос