java - Android 从 drawable 释放内存

标签 java android android-bitmap

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

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/

相关文章:

java - 使用 spring-cloud-starter-netflix-eureka-client 依赖项在 pom.xml 中出现错误

java - 字节移位逆运算

java - Eclipse 说 "Update Android Developer Toolkit"

java - 为什么 setOnClickListener 被调用两次?

android - 盒子没有填满最大尺寸 - Jetpack Compose

android - 单独的圆角(不是所有角)

java - 如何计算android上位图的java hashmap的大小

java - 如果运行 openssl passwd -apr1 命令时密码包含美元 ($) 字符,则无法获得所需结果

java - 格式化双Android

android - 在android中的位图中适合图像