Android发布内存来自drawable

时间:2016-12-20 16:25:23

标签: java android android-bitmap

所以我正在使用服务,在某些时候我需要运行它:

Bitmap wallpaperBitmap = ((BitmapDrawable) WallpaperManager
                                .getInstance(getApplicationContext()).getDrawable()).getBitmap();

然后将此位图设置为视图的背景,并使用

将其保留在我的服务中
View.setBackground(new BitmapDrawable(res, wallpaperBitmap));

事情是,只要我从WallpaperManager得到drawable,我的服务的RAM使用率就会跳起来因为wallpaperBitmap被保存在内存中。或者可能由WallpaperManager返回的drawable是保留在内存中的drawable(我不完全确定)。如何从此背景中释放内存?

需要注意的是:我确实在一段时间后将视图的背景更改为颜色,并且位图不再显示为背景,但RAM从未被释放。我也试过`wallpaperBitmap.recycle()`但内存仍未清除。如何从WallpaperManager中释放内存?

2 个答案:

答案 0 :(得分:1)

你可以做bitmap.recycle()。它释放与位图关联的对象,并清除对像素数据的引用,从而允许对其进行垃圾收集。

答案 1 :(得分:0)

你可以试试这个。它会立即释放内存

bitmap.recycle();
bitmap = null;