【发布时间】:2016-01-26 00:55:10
【问题描述】:
假设我有一个关于电影/演员的应用。有一个包含电影(或演员)详细信息的活动,在这个活动中,我有 3 个片段的浏览器:A、B 和 C。每个片段都有我使用 Picasso 和 Ion 从互联网下载的图像。
我正在使用位图,执行转换,将它们调整为图像视图的大小,这样它们就不会占用太多内存。但我不会将它们保存在任何地方,我不需要保存它们。
我有每个片段中有很多图像(我使用回收器 gridview)。片段 B 和 C 具有这些带有电影或演员的网格视图,其中 单击项目会打开新的详细信息活动,其中包含相同的片段和新的项目列表。因此,每次单击网格视图中的项目时,我都可以真正深入地打开新活动。
因此,我迟早会达到 OOM,这取决于 RAM 设备的数量。 (我无法在具有 2gb 内存的真实手机上重现此问题,但 512mb 应用程序在第 5 或第 6 次打开活动时崩溃)。
每次活动打开时分配的内存量都会增加。只有当我回到以前的时候它才会减少。
所以问题是:我应该怎么做才能减少内存使用?我应该以某种方式重用已经存在的活动吗?我不知道如何管理回到以前的电影。是的,一切皆有可能,但我不想让它变得更复杂或更慢。
我已经尝试完成之前的活动。或者在 onStop 方法中删除和回收每个图像视图中的位图。两种方式都不好,因为我必须以某种方式返回并查看数据和图像。并且不要每次都再次下载它们。
我希望你们能给我一个想法,伙计们。由于我是 java 和 android 开发的新手,我可能会遗漏一些东西。
【问题讨论】:
-
你为什么不缓存你的bitmpas?这正是它的用途!
-
好的,我想我现在知道它是如何工作的了。到目前为止,你和 Gabe Sechan 帮助我了解了我应该看哪里。让它成为答案,非常感谢你们:)。
标签: java android android-activity bitmap out-of-memory