Android 上多图内容内存老不够 - - 求问怎么办

2015-12-04 09:36:58 +08:00
 20015jjw

最近在写一个论坛的客户端,现在主要问题就是如果设备是平板什么的,可能会 OOM ,但是不知道怎么解决。
截图如下:

虽然截图中看起来一个屏幕上的图还好,不是那么多,但是左右有好多 Tab ,每个 Tab 里面都会有好多图。

容器是RecyclerView里面加上CardView,载图是用的Picasso,并且已经用了 cache 和 resize 。现在不是很明白怎么才能优化这个,或者可能可以增大可用内存空间什么?我看我的 AS 每次都 cap 在 95M 这样。平板是 Nexus 9 。

2491 次点击
所在节点    问与答
11 条回复
kslr
2015-12-04 10:07:42 +08:00
想起来第一部手机了,当时打开一个有 100+图的页面会崩溃,然后每次看一点就死机重启继续翻下一页,继续死机
ufo22940268
2015-12-04 10:31:38 +08:00
20015jjw
2015-12-04 11:55:57 +08:00
@ufo22940268 似乎 picasso 的 resize 就是 subsample 我再看看 我在想是不是有啥没有 recycle 掉 因为我滚到下面上面的图似乎不需要再载入一次了 然而感觉就算从 cache 载也没那么快把...? 蟹蟹
20015jjw
2015-12-04 11:58:53 +08:00
@kslr hhhh 我当年的 G1 貌似还没装过有 100 个图的 App
em70
2015-12-04 12:12:49 +08:00
图文混排是 HTML5 在移动设备上唯一比原生好的地方
lucifer9
2015-12-04 14:22:13 +08:00
需要问一下,做 1024 客户端的是怎么克服这个问题的
dslwind
2015-12-04 15:45:23 +08:00
@lucifer9 1024 客户端在我一台 1G RAM 的安卓机上看达盖尔的旗帜版块经常会崩溃……
dullwit
2015-12-04 16:47:48 +08:00
1. Fragment 的管理( setOffscreenPageLimit? 切换 Fragment 是否释放图片)
2. 滑动的是否暂停加载图片?
3. LruCache 划分的大小?(手机内存低,可以考虑向 Ashmem 里写入图片)
目前暂时想得这些,还有极端的方法
sunpj
2015-12-04 17:16:30 +08:00
setOffscreenPageLimit 改成 1 吧 虽然这样切换会比较慢。。
实在不行考虑使用 facebook 的 fresco 那个内存管理好点
TVBG
2015-12-04 19:47:48 +08:00
需要用到两级缓存,内存缓存和磁盘缓存,内存缓存要限制大小。
KNOX
2015-12-04 20:52:46 +08:00
试试 glide

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX