最近在写一个论坛的客户端,现在主要问题就是如果设备是平板什么的,可能会 OOM ,但是不知道怎么解决。
截图如下:
虽然截图中看起来一个屏幕上的图还好,不是那么多,但是左右有好多 Tab ,每个 Tab 里面都会有好多图。
容器是RecyclerView
里面加上CardView
,载图是用的Picasso
,并且已经用了 cache 和 resize 。现在不是很明白怎么才能优化这个,或者可能可以增大可用内存空间什么?我看我的 AS 每次都 cap 在 95M 这样。平板是 Nexus 9 。
1
kslr 2015-12-04 10:07:42 +08:00
想起来第一部手机了,当时打开一个有 100+图的页面会崩溃,然后每次看一点就死机重启继续翻下一页,继续死机
|
2
ufo22940268 2015-12-04 10:31:38 +08:00 1
|
3
20015jjw OP @ufo22940268 似乎 picasso 的 resize 就是 subsample 我再看看 我在想是不是有啥没有 recycle 掉 因为我滚到下面上面的图似乎不需要再载入一次了 然而感觉就算从 cache 载也没那么快把...? 蟹蟹
|
5
em70 2015-12-04 12:12:49 +08:00 via Android
图文混排是 HTML5 在移动设备上唯一比原生好的地方
|
6
lucifer9 2015-12-04 14:22:13 +08:00
需要问一下,做 1024 客户端的是怎么克服这个问题的
|
7
dslwind 2015-12-04 15:45:23 +08:00 via Android
@lucifer9 1024 客户端在我一台 1G RAM 的安卓机上看达盖尔的旗帜版块经常会崩溃……
|
8
dullwit 2015-12-04 16:47:48 +08:00 1
1. Fragment 的管理( setOffscreenPageLimit? 切换 Fragment 是否释放图片)
2. 滑动的是否暂停加载图片? 3. LruCache 划分的大小?(手机内存低,可以考虑向 Ashmem 里写入图片) 目前暂时想得这些,还有极端的方法 |
9
sunpj 2015-12-04 17:16:30 +08:00 1
setOffscreenPageLimit 改成 1 吧 虽然这样切换会比较慢。。
实在不行考虑使用 facebook 的 fresco 那个内存管理好点 |
10
TVBG 2015-12-04 19:47:48 +08:00 1
需要用到两级缓存,内存缓存和磁盘缓存,内存缓存要限制大小。
|
11
KNOX 2015-12-04 20:52:46 +08:00 1
试试 glide
|