内存不足错误(ViewPager + ImageViews)
-
28-10-2019 - |
题
当页面大小超过70应用崩溃时,我正在viewpager中显示150多个图像, 所有图像都从网络加载,并且我休假了[link]:奇怪将图像加载到位图对象时出现内存不足问题
每当页面滑动达到4时,我就会回收它。
70页应用程序占用200 MB内存。
我需要您的帮助,如何处理
我必须通过滑动显示所有页面...
我还使用了Runtime.getRuntime()。gc();
是应用程序内存超过50 MB时释放内存的任何方法
提前感谢
解决方案
完整的解决方案可以在下面找到,重要的行是destroyItem方法中的行: 通用标签
其他提示
我认为发生这种情况是因为您存在内存泄漏,仔细检查变量,不要对大型变量使用静态变量,在可能的情况下使用final并将所有成员设为私有。
我建议您进行一次提交(或保存当前代码),然后尝试执行我要求的操作,看看是否可以解决问题。
代码示例会让我告诉您是否存在内存泄漏,也许您可以将代码发布到类似github或google代码的地方
最重要的是:您可能做对了所有事情,但是变量仍然保留了对图像的引用,因此垃圾收集器无法触摸它们。
我知道您的内存泄漏很痛苦,但是请不要惊慌这种情况发生得最好,因为这很容易发生。
注意:无论我从网络应用程序加载的数据量多大,如果处理正确,都永远不会超过1个文件的大小。
谢谢
Sheetal,
查看了您的代码后,您可以尝试以下操作吗: 通用标签
这应该释放imageView进行垃圾收集。
您是否要在onCreateView()视图方法中加载图像?
通过这种方式,该框架似乎可以满足内存管理要求。我曾尝试将图像加载到FragmentPageAdapter中,然后将它们传递到预加载的Fragment构造函数中,或者作为Fragment instaniateItem方法的一部分,但这些都给了我您所面临的问题。最后,我将加载每个图像所需的信息传递给Fragment构造函数,然后在onCreateView()方法中使用了这些详细信息。
标记
Sheetal,
我暂时没有代码,但这应该类似于以下内容: 通用标签
这几乎是我的头上的事,所以可能不准确,但很接近。
如果您只需要大声喊叫,别忘了将此答案标记为对您有帮助:)。
Sheetal,
根据要求,我使用上面的代码如下:
在FragmentActivity中,我在onCreate()方法中执行以下操作: 通用标签
然后在我的PagerAdapter中执行以下操作: 通用标签
然后我在上面的上一个答案中使用代码。
这显然不是完整的代码,它是根据我的实际代码改编而成的,但是它应该使您对做什么和在哪里做有个好主意。
标记