将图像加载到xml中的ImageView会占用更多内存吗?
我有大约7张图片浏览的活动(就像任何Android手机中的应用托盘一样。)
我正在为xml中的每个图像视图加载图像。这会导致OutOfMemoryError吗?
有没有办法回收这些?
答案 0 :(得分:1)
是的,可以将drawable
张图片附加到ImageView
,您可以在需要时将其删除。
imageview.setBackgroundResource(R.drawable.image);
or
imageview.setImageDrawable(drawable);
它不会导致任何内存不足问题。 Link to Doc
答案 1 :(得分:0)
我在加载图片时遇到了这个问题。有时此错误只能在Android模拟器中看到,有时这也会导致移动设备中的应用程序崩溃。
我通过以下两个步骤解决了这个问题:
如果分辨率太高,请重新调整图像大小。
没有太多图像对象同时打开。
您也可以通过在不再需要时将图像对象指定为NULL来帮助垃圾收集器。
除非必要,否则我会阻止同时打开太多图像。
您必须重新调整大小的因素取决于图像的实际大小。
答案 2 :(得分:0)
解决Android中内存问题的一些提示:
1)。永远不要使用局部变量来专门在循环中存储大数据/位图,因为它会创建不必要的对象。在这种情况下,我更喜欢类/实例变量。除非有必要,否则尽量不要保留数据。
2)。避免在任何地方调用View.findViewById(..)。 Romain Guy在Google I/O 2010中明确指出这种方法成本很高(需要运行一些KB的内存),因此请像使用ViewHolder一样智能地调用此方法,因为它会占用更少的内存。
3)有效地使用字符串池,并在使用字符串进行大量操作时使用StringBuilder / StringBuffer。确保您知道何时必须使用StringBuffer,因为它是同步的,并且与StringBuilder相比再次成本高昂。