通知远程视图中的位图无法回收

时间:2015-04-21 09:57:29

标签: java android bitmap remoteview

我想写mp3播放器应用。在通知上显示音乐专辑

以下是代码:

mCoverBitmap = MusicModel.getAlbumArt(musicItem.getUri());
    if (mCoverBitmap != null) {
        mNormalRemoteViews.setImageViewBitmap(R.id.notification_image, mCoverBitmap);
    } else {
        mNormalRemoteViews.setImageViewResource(R.id.notification_image, R.drawable.default_album);
    }

但是我改变了很多音乐后会导致内存不足。所以我回收了mCoverBitmap。但它崩溃了。 java.lang.IllegalStateException:不能包含循环位图

然后我尝试缓存位图。并在下次需要通知时回收它。

    BitmapUtil.recycleBitmap(mCoverCache);
    mCoverCache = mCoverBitmap;
    mCoverBitmap = MusicModel.getAlbumArt(musicItem.getUri());
    if (mCoverBitmap != null) {
        mNormalRemoteViews.setImageViewBitmap(R.id.notification_image, mCoverBitmap);
    } else {
        mNormalRemoteViews.setImageViewResource(R.id.notification_image, R.drawable.default_album);
    }

但它会导致同样的例外。 如何回收位图?

1 个答案:

答案 0 :(得分:0)

对您的应用程序使用相同的远程视图会导致内存不足错误。 因此,而不是回收只是重新创建远程视图。 https://groups.google.com/forum/m/#!topic/android-developers/qQ4SV5wL7uM