我想写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);
    }

但这也导致了同样的例外。
如何回收位图?

最佳答案

对应用程序重新使用同一远程视图将导致内存不足错误。
因此,与其回收,不如重新创建远程视图。
https://groups.google.com/forum/m/#!topic/android-developers/qQ4SV5wL7uM

09-10 06:43