I use IFTTT to download latest wallpapers from reddit.com/r/wallpapers (Specifically, this recipe: https://ifttt.com/applets/33984870d-set-my-android-wallpaper-to-the-best-posts-in-r-wallpapers )
Today it seems a wallpaper was downloaded that was quite big, lawnchair crashed.
The wallpaper in question is this one I think: https://i.imgur.com/p2UBn6y.jpg (quite wide).
It doesn't crash. :-)
Lawnchair crashed
What seems to happen is that IFTTT simply sets the wallpaper, whereas the standard wallpaper chooser does some sanity checking on the wallpaper first.
10-10 10:52:00.586 29812 29863 E AndroidRuntime: FATAL EXCEPTION: pool-1-thread-3
10-10 10:52:00.586 29812 29863 E AndroidRuntime: Process: ch.deletescape.lawnchair, PID: 29812
10-10 10:52:00.586 29812 29863 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 139806732 byte allocation with 16777216 free bytes and 86MB until OOM
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at android.graphics.Bitmap.nativeCreate(Native Method)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at android.graphics.Bitmap.createBitmap(Bitmap.java:915)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at ch.deletescape.lawnchair.blur.BlurWallpaperProvider.blur(Unknown Source)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at ch.deletescape.lawnchair.blur.BlurWallpaperProvider.updateWallpaper(Unknown Source)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at ch.deletescape.lawnchair.blur.BlurWallpaperProvider.access$updateWallpaper(Unknown Source)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at ch.deletescape.lawnchair.blur.BlurWallpaperProvider$mUpdateRunnable$1.run(Unknown Source)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
10-10 10:52:00.586 29812 29863 E AndroidRuntime: at java.lang.Thread.run(Thread.java:762)
Your issue seems to be related to blur, more specifically, blurring the wallpaper (for e.g. the dock).
Since Android stores the original image and allows one to access it, Lawnchair uses that instead of capturing the current screen and blurring the capture. This means that a set wallpaper's original will be used for blurring, which is indeed quite large (6MP), which causes a memory overflow.
A temporary fix would be switching to a different launcher, or resetting your wallpaper, or resetting Lawnchair so it does not use blur while you change wallpaper.
@deletescape I believe there should be an exception catch at ch.deletescape.lawnchair.blur.BlurWallpaperProvider's blur method so such issues in the future are caught.
Yeah I simply changed the wallpaper using another launcher and it all worked fine after that. Was unable to get to the Lanwchair settings to switch off blur, as I figured it was something to do with blur after finally getting to the stacktrace.
@AubreyKilian you could've gotten to Settings and wipe Lawnchair's settings :) Either way, we'll look into this.
Heh, I didn't want to have to reposition all my homescreen icons etc. :-P
Finally fixed with commit 678144787d9dd47e94fd6b6f50719f27cf4022c3
Most helpful comment
Finally fixed with commit 678144787d9dd47e94fd6b6f50719f27cf4022c3