所以我正在使用一个服务,在某些时候我需要运行这个:
Bitmap wallpaperBitmap = ((BitmapDrawable) WallpaperManager
.getInstance(getApplicationContext()).getDrawable()).getBitmap();
然后将此位图设置为我在服务中使用的 View 的背景
View.setBackground(new BitmapDrawable(res, wallpaperBitmap));
事情是,一旦我从 WallpaperManager
获得可绘制对象,我的服务的 RAM 使用率就会上升,因为 wallpaperBitmap
保存在内存中。或者 WallpaperManager
返回的 drawable 可能是保存在内存中的那个(我不太确定)。如何从这个后台释放内存?
要注意:一段时间后,我确实将 View 的背景更改为一种颜色,并且位图不再显示为背景,但 RAM 从未被释放。我也试过 `wallpaperBitmap.recycle()` 但内存仍然没有被清除。如何从 WallpaperManager 释放该内存?
最佳答案
你可以做 bitmap.recycle()。它释放与位图关联的对象并清除对像素数据的引用,从而允许抓取它。
关于java - Android 从 drawable 释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246914/