From b4ec44001f5fe41712e96f0309219d02334f6b0a Mon Sep 17 00:00:00 2001 From: cretin45 Date: Wed, 13 Apr 2016 14:52:04 -0700 Subject: Trebuchet: Don't crash when AppWidgetService is unavailable Issue-id: CYNGNOS-2437 Change-Id: Ie83f26482539a821f498e07bec6d955c849b02c7 --- src/com/android/launcher3/Launcher.java | 3 ++- src/com/android/launcher3/LauncherAppWidgetHost.java | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index dbdc61e5b..58e936587 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -513,7 +513,6 @@ public class Launcher extends Activity mAppWidgetManager = AppWidgetManagerCompat.getInstance(this); mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID); - mAppWidgetHost.startListening(); // If we are getting an onCreate, we can actually preempt onResume and unset mPaused here, // this also ensures that any synchronous binding below doesn't re-trigger another @@ -1077,6 +1076,8 @@ public class Launcher extends Activity if (mLauncherCallbacks != null) { mLauncherCallbacks.onStart(); } + // If AppwidgetService failed to bind in onCreate, this will attempt binding again. + onAppWidgetHostReset(); } @Override diff --git a/src/com/android/launcher3/LauncherAppWidgetHost.java b/src/com/android/launcher3/LauncherAppWidgetHost.java index 6c3a1e896..6105a0602 100644 --- a/src/com/android/launcher3/LauncherAppWidgetHost.java +++ b/src/com/android/launcher3/LauncherAppWidgetHost.java @@ -21,6 +21,7 @@ import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetProviderInfo; import android.content.Context; import android.os.TransactionTooLargeException; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -69,6 +70,7 @@ public class LauncherAppWidgetHost extends AppWidgetHost { try { super.startListening(); } catch (Exception e) { + /* if (e.getCause() instanceof TransactionTooLargeException) { // We're willing to let this slide. The exception is being caused by the list of // RemoteViews which is being passed back. The startListening relationship will @@ -76,7 +78,10 @@ public class LauncherAppWidgetHost extends AppWidgetHost { // widgets upon bind anyway. See issue 14255011 for more context. } else { throw new RuntimeException(e); - } + }*/ + // If we can't bind to the app widget service, move on. We will retry at the next + // onStart(). + Log.e("LauncherAppWidgetHost", "Error binding to IAppWidgetService", e); } } -- cgit v1.2.3