android - ImageView.SetImageResource 方法占用大量内存(40%)

标签 android

我得到了带有 SQLite 数据库的应用程序,其中保存了可绘制对象(字符串)的名称。多个drawable保存在res/drawable目录下,它们的缩放尺寸drawable-hdpi, drawable-mdpi, drawable-xhdpi等。这个设备使用mdpi。它们的大小约为 80 kB。每次我调用 update() 方法时,我都会为同一个 ImageView 调用 SetImageResource 方法,并且我只更改 图像文件并且需要大约 0.8 MB 的内存增加。如何避免这种情况?

private ImageView mImageName;

private void update(){
mImageName.setImageResource(getResources().getIdentifier("@drawable/" + mQuestionLibrary.getImage(mQuestionNumber), null, getPackageName()));
}

最佳答案

您必须使用 Image Resource Importer 才能为不同的屏幕设置多种尺寸。

然后你需要通过这段代码设置你的图片:

mImageName.setImageResource(R.drawable.resource_name);

enter image description here

您还可以修改 mQuestionLibrary.getImage(mQuestionNumber) 以返回资源 ID 而不是资源名称,然后使用:

mImageName.setImageResource(mQuestionLibrary.getImage(mQuestionNumber));

关于android - ImageView.SetImageResource 方法占用大量内存(40%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501531/

相关文章:

Android - 获取对 SD 卡上任何文件路径具有写入权限的 DocumentFile(已获得 SD 卡权限)

Android - 在同一个 XML 文件上进行翻译和 objectAnimator

android - java.lang.StackOverflowError:堆栈大小8192KB蓝牙管理器

android - 基于 SQLite 支持的 ContentProvider 更新 ListView

android - WVGA800 和 WVGA854 的资源不同?

java - 使用滑动加载图像并根据图像宽度更改 ImageView 宽度

android - 如何从Windows Phone中获取字体文件

java - 无法使用字符串作为选项卡名称

Android JUnit 测试不能调用任何 android api?

java - jsonResponse.getJSONArray 不工作