Używamy Picassa do ładowania wszystkich obrazów w naszej aplikacji, od małych awatarów po duże obrazy pełnoekranowe i otrzymujemy 1 z tych błędów na każde 10 aktywnych użytkowników dziennie. Pamięć podręczna Picassa wypełnia się, ale rozumiemy, że powinna się utrzymywać.Picasso produkuje OutOfMemoryError
Nasze dzienniki wskazują, że te błędy występują najczęściej podczas ładowania dużych pełnoekranowych obrazów (1080x1920) i dużych awatarów (720x720) na urządzeniach zaawansowanych (Galaxy S4), ale czasami na małych awatarach (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)
Czy używasz tego w adapterze? – Michael
Otrzymujemy ten błąd w całej aplikacji. W programie ListAdapters PagerAdapters i w normalnych układach. – nathanielwolf
Czy używasz swojej własnej instancji programu Picasso w wersji singleton w całej aplikacji? – Michael