当页面大小超过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中执行以下操作: 通用标签

然后我在上面的上一个答案中使用代码。

这显然不是完整的代码,它是根据我的实际代码改编而成的,但是它应该使您对做什么和在哪里做有个好主意。

标记

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top