2014-06-17 35 views
7

我们正在使用毕加索从我们的应用程序中加载所有图像,从小头像到大型全屏图像,我们每10位日常活跃用户就会收到1个这样的错误。毕加索的缓存正在填满,但我们的理解是它应该保持自己。毕加索生产OutOfMemoryError

我们的日志记录显示,在高端设备(Galaxy S4)上加载大型全屏图像(1080x1920)和大型头像(720x720)时,偶尔会在小型头像(135x135)上加载这些错误的频率最高。

com.couchsurfing.mobile.data.PicassoException: Error while loading image with Picasso 
     at com.couchsurfing.mobile.data.DataModule$1.onImageLoadFailed(DataModule.java:158) 
     at com.squareup.picasso.Picasso.complete(Picasso.java:374) 
     at com.squareup.picasso.Picasso$1.handleMessage(Picasso.java:97) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5419) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by: java.lang.RuntimeException: ===============BEGIN PICASSO STATS =============== 
Memory Cache Stats 
    Max Cache Size: 19173961 
    Cache Size: 17988408 
    Cache % Full: 94 
    Cache Hits: 228 
    Cache Misses: 244 
Network Stats 
    Download Count: 131 
    Total Download Size: 3375735 
    Average Download Size: 25768 
Bitmap Stats 
    Total Bitmaps Decoded: 206 
    Total Bitmap Size: 144932008 
    Total Transformed Bitmaps: 160 
    Total Transformed Bitmap Size: 40233240 
    Average Bitmap Size: 703553 
    Average Transformed Bitmap Size: 195306 
===============END PICASSO STATS =============== 

     at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:117) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
     at java.lang.Thread.run(Thread.java:841) 
     at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:394) 
Caused by: java.lang.OutOfMemoryError 
     at android.graphics.BitmapFactory.nativeDecodeStream(BitmapFactory.java) 
     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623) 
     at com.squareup.picasso.NetworkBitmapHunter.decodeStream(NetworkBitmapHunter.java:118) 
     at com.squareup.picasso.NetworkBitmapHunter.decode(NetworkBitmapHunter.java:72) 
     at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:144) 
     at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:101) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
     at java.lang.Thread.run(Thread.java:841) 
     at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:394) 
+0

你是否在一个适配器中使用它? – Michael

+0

我们在整个应用程序中收到此错误。在ListAdapters PagerAdapters和正常布局中。 – nathanielwolf

+0

您是否在整个应用程序中使用您自己的毕加索单件实例? – Michael

回答

1

我有同样的问题,临时解决方法之一是

<application 
    ... 
    android:largeHeap="true"> 

现在,我还没有找到另一种解决方案(也许我已经搜查不够)。但很多人与毕加索有OOM。

0

在加载图片时,你正在请求fit()吗?我怀疑这是我的问题,我假设自己的图像与毕加索抽样自己,但你仍然需要告诉它这样做。