0

将图像加载到 xml 中的 ImageView 会占用更多内存?

我有一个包含大约 7 个图像视图的活动(就像任何 android 手机中的应用程序托盘一样。)

我正在为 xml 中的每个图像视图加载图像。这会导致 OutOfMemoryError 吗?

有没有办法回收这些?

4

3 回答 3

1

是的,可以附加drawable图像,ImageView并且可以在需要时将其删除。

imageview.setBackgroundResource(R.drawable.image);
                or    
imageview.setImageDrawable(drawable);

它不会导致任何内存不足问题。链接到文档

于 2012-11-16T09:27:16.617 回答
0

我在加载图像时遇到了这个问题。有时此错误只能在 Android 模拟器中看到,有时这也会使移动设备中的应用程序崩溃。

我通过以下两个步骤解决了这个问题:

  1. 如果分辨率太高,请重新调整图像大小。

  2. 没有同时打开太多图像对象。

    您也可以通过在不再需要时将图像对象分配为 NULL 来帮助垃圾收集器。

除非有必要,否则我会防止同时打开太多图像。

您必须重新调整大小的因素将取决于图像的实际大小。

于 2012-11-16T09:24:54.880 回答
0

解决 Android 内存问题的几个小技巧:

1)。切勿使用局部变量专门在循环中存储大数据/位图,因为它会创建不必要的对象。在这种情况下,我更喜欢类/实例变量。除非需要,否则尽量不要持久化数据。

2)。尽可能避免调用 View.findViewById(..)。Romain Guy 在Google I/O 2010中明确指出此方法成本高(运行需要一些 KB 的内存),因此请巧妙地调用此方法,就像使用 ViewHolder 一样会消耗更少的内存。

3) 有效使用字符串池,在对字符串进行繁重操作时使用 StringBuilder/StringBuffer。确保您知道何时必须使用 StringBuffer,因为它是同步的,并且与 StringBuilder 相比再次昂贵。

于 2012-11-16T10:05:47.290 回答