我正在使用一个服务,在某个时候需要运行以下代码:
Bitmap wallpaperBitmap = ((BitmapDrawable) WallpaperManager
.getInstance(getApplicationContext()).getDrawable()).getBitmap();
然后将此位图设置为背景,通过在我的服务中保留的视图来使用。
View.setBackground(new BitmapDrawable(res, wallpaperBitmap));
问题是从WallpaperManager
获取drawable后,我的服务的RAM使用量会立即增加,因为wallpaperBitmap
被保留在内存中。或者可能是WallpaperManager
返回的drawable被保留在内存中(我不确定)。如何释放这个背景的内存?
需要注意的是:我会在一段时间后将视图的背景更改为颜色,并且位图不再作为背景显示,但RAM永远不会被释放。我还尝试了`wallpaperBitmap.recycle()`,但内存仍未清除。如何从WallpaperManager中释放该内存?