使用Picasso时是否需要处理内存管理?

时间:2014-09-07 14:40:05

标签: android picasso

我使用PicassoBaseAdapter内加载了大量(相对较小的)图片,并结合了我自己的无尽ListView实现。基本上我可以使用几乎最简单的设置:

         Picasso.with(c)
            .load(friend.getPhoto_url_200())
            .resize(200, 200)
            .centerCrop()
            .placeholder(R.drawable.default_profile)
            .error(R.drawable.default_profile)
            .transform(transformation)
            .into(holder.imgAva); 

AFAIK,Picasso自行处理图像缓存和回收。查看日志,我看到当加载更多项目时,GC释放的内存量不断增加(尽管应用程序使用的RAM量仅在比较10个加载500个项目时增加<3MB):

 D/dalvikvm﹕ GC_FOR_ALLOC freed 481K, 8% free 23093K/24944K, paused 14ms, total 14ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 348K, 7% free 23399K/25104K, paused 12ms, total 12ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 798K, 8% free 23587K/25532K, paused 14ms, total 14ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 415K, 7% free 24053K/25852K, paused 13ms, total 13ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1761K, 9% free 24153K/26428K, paused 21ms, total 21ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 664K, 9% free 24297K/26428K, paused 18ms, total 18ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 354K, 7% free 25064K/26860K, paused 18ms, total 19ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1064K, 9% free 25568K/27840K, paused 19ms, total 19ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1581K, 10% free 25732K/28480K, paused 22ms, total 26ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1202K, 9% free 26343K/28780K, paused 20ms, total 20ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1514K, 10% free 26537K/29448K, paused 20ms, total 20ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1265K, 10% free 26849K/29768K, paused 14ms, total 14ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1243K, 10% free 27381K/30172K, paused 19ms, total 20ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1615K, 10% free 27956K/30972K, paused 23ms, total 23ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1595K, 10% free 28555K/31588K, paused 21ms, total 21ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 2071K, 11% free 29106K/32532K, paused 16ms, total 16ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 1879K, 10% free 29837K/33052K, paused 22ms, total 22ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 2012K, 11% free 30596K/34132K, paused 21ms, total 21ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 2570K, 11% free 31431K/35204K, paused 20ms, total 20ms
 D/dalvikvm﹕ GC_FOR_ALLOC freed 3169K, 12% free 32091K/36276K, paused 22ms, total 22ms

在某些时候,我还收到JIT消息告诉我它正在调整JIT表的大小以分配更多内存。

在这方面,我的问题是:

  • 我可以做任何事情来进一步优化这个过程,还是让Picasso独自处理它?<​​/ li>
  • 我没有机会在低端设备上测试它,Nexus 5是一个相对强大的设备,所以我无法达到堆限制。当毕加索开始耗尽内存时,他会如何表现?它会删除缓存的项目/减少设置到列表中的图像数量ImageViews /执行其他操作还是只会抛出OutOfMemoryError
  • 使用Picasso将图像加载到ListView时,是否有任何一般性提示?

1 个答案:

答案 0 :(得分:1)

使用picasso是一个非常好的选择它处理具有各种过期策略的磁盘和内存缓存图像下采样到目标视图大小以提高性能并减少内存使用批量UI更新以提高UI响应性所以你通常没有担心记忆,但我建议你给排球看一下它好多了