OSDN Git Service

Trebuchet: Don't crash when AppWidgetService is unavailable
authorcretin45 <cretin45@gmail.com>
Wed, 13 Apr 2016 21:52:04 +0000 (14:52 -0700)
committercretin45 <cretin45@gmail.com>
Wed, 13 Apr 2016 23:17:21 +0000 (16:17 -0700)
Issue-id: CYNGNOS-2437

Change-Id: Ie83f26482539a821f498e07bec6d955c849b02c7

src/com/android/launcher3/Launcher.java
src/com/android/launcher3/LauncherAppWidgetHost.java

index 7396933..bcff560 100644 (file)
@@ -523,7 +523,6 @@ public class Launcher extends Activity
         mAppWidgetManager = AppWidgetManagerCompat.getInstance(this);
 
         mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID);
-        mAppWidgetHost.startListening();
 
         if (sRemoteFolderManager == null) {
             sRemoteFolderManager = new RemoteFolderManager(this);
@@ -1099,6 +1098,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
index 6c3a1e8..6105a06 100644 (file)
@@ -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);
         }
     }