所以我正在使用服务,在某些时候我需要运行它:
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中释放内存?
答案 0 :(得分:1)
你可以做bitmap.recycle()。它释放与位图关联的对象,并清除对像素数据的引用,从而允许对其进行垃圾收集。
答案 1 :(得分:0)
你可以试试这个。它会立即释放内存
bitmap.recycle();
bitmap = null;