2014-06-17 41 views
7

Chúng tôi đang sử dụng Picasso để tải tất cả hình ảnh trong ứng dụng, từ hình đại diện nhỏ đến hình ảnh toàn màn hình lớn và chúng tôi nhận được 1 trong số các lỗi này cho mỗi 10 người dùng hoạt động hàng ngày. Bộ nhớ cache Picasso được lấp đầy, nhưng sự hiểu biết của chúng tôi rằng nó nên duy trì chính nó. Bản ghi của chúng tôi cho thấy những lỗi này xảy ra thường xuyên nhất khi tải hình ảnh toàn màn hình lớn (1080x1920) và hình đại diện lớn (720x720) trên thiết bị cao cấp (Galaxy S4), nhưng đôi khi trên hình đại diện nhỏ (135x135).Picasso sản xuất OutOfMemoryError

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

Bạn đang sử dụng tính năng này trong bộ điều hợp không? – Michael

+0

Chúng tôi đang gặp lỗi này trong suốt ứng dụng. Trong ListAdapters PagerAdapters và trong bố trí bình thường. – nathanielwolf

+0

Bạn đang sử dụng bản sao Picasso của riêng bạn trên ứng dụng? – Michael

Trả lời

1

Tôi đã có cùng một vấn đề và một trong những cách giải quyết tạm thời là

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

Còn bây giờ, tôi đã không tìm thấy một giải pháp (có lẽ tôi đã tìm kiếm không đủ). Nhưng nhiều người có OOM với Picasso.

0

Bạn có đang gọi fit() khi tải hình ảnh không? Tôi nghi ngờ đây là vấn đề của tôi, tôi giả định hình ảnh xuống lấy mẫu với Picasso nhưng bạn vẫn cần phải nói nó làm như vậy.