Catching OOM during widget preview generation
Bug: 32365481
Change-Id: Ifc49b033c3ad83213d50793301d94bb6337a412d
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java
index 45e65b5..cc9dde1 100644
--- a/src/com/android/launcher3/WidgetPreviewLoader.java
+++ b/src/com/android/launcher3/WidgetPreviewLoader.java
@@ -301,7 +301,14 @@
Drawable drawable = null;
if (info.previewImage != 0) {
- drawable = mWidgetManager.loadPreview(info);
+ try {
+ drawable = mWidgetManager.loadPreview(info);
+ } catch (OutOfMemoryError e) {
+ Log.w(TAG, "Error loading widget preview for: " + info.provider, e);
+ // During OutOfMemoryError, the previous heap stack is not affected. Catching
+ // an OOM error here should be safe & not affect other parts of launcher.
+ drawable = null;
+ }
if (drawable != null) {
drawable = mutateOnMainThread(drawable);
} else {