【问题标题】:"Bitmap size exceeds VM budget"“位图大小超出 VM 预算”
【发布时间】:2012-06-23 17:10:18
【问题描述】:

有时我会收到错误消息“位图大小超出 VM 预算”。当我一个接一个地打开 20 个活动时会发生这种情况,每个活动都包含 500x300 PNG 图片。当我使用 android:background="@drawable/xxxxxxxx" 在我的 XML 布局中实现图片时,我没有遇到问题。

当我在我的Java代码中实现图片时,首先出现了错误。

<ImageView
android:id="@+id/ImVpic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

ImageView pic;
pic = (ImageView)findViewById(R.id.ImVpic);
pic.setImageResource(R.drawable.picture);

我怎样才能摆脱这个错误?我的代码中缺少什么?我的意思是它确实有效,但有时它会抛出那个非常烦人的错误。

【问题讨论】:

    标签: android bitmap virtual-machine


    【解决方案1】:

    这是您在 SO 上看到的非常常见的问题。加载图像时似乎可用内存不足。确保您没有为图像保留长时间的引用,这允许 dalvik 从未使用的图像(或)对象中回收内存。

    【讨论】:

    • 我的图片的参考实际上很短(4 个字母)。你确定这是问题吗?我的意思是即使引用很短,应用程序仍然会崩溃。
    • 这与参考尺寸无关。如果您的引用指向“对象”,则该对象将不符合 GC 条件。
    • @JohnD 'Reference' 并不意味着'文件名'。这意味着您程序中的某些变量仍然指向旧纹理,因此垃圾收集器无法声明它。
    • 可能是因为我在每个活动中使用相同的名称作为参考?我总是使用您在上面看到的相同代码。我只为每个活动更改 R.drawable.xxxxxxxxxx。我应该在每个活动中为参考提供不同的名称吗?我的意思是这样的: Activity1: pic ;活动 2 pic2 ;活动 3 pic3 ; ....
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2011-04-26
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多