DO NOT MERGE - Catching TransactionTooLargeException in AppWidgetHost#startListening
solution b) from issue 14255011
Change-Id: I1dc521632a132de496ff9a583b1e0b29415aacdd
(cherry picked from commit 084c31873e)
This commit is contained in:
@@ -20,6 +20,7 @@ import android.appwidget.AppWidgetHost;
|
||||
import android.appwidget.AppWidgetHostView;
|
||||
import android.appwidget.AppWidgetProviderInfo;
|
||||
import android.content.Context;
|
||||
import android.os.TransactionTooLargeException;
|
||||
|
||||
/**
|
||||
* Specific {@link AppWidgetHost} that creates our {@link LauncherAppWidgetHostView}
|
||||
@@ -41,6 +42,22 @@ public class LauncherAppWidgetHost extends AppWidgetHost {
|
||||
return new LauncherAppWidgetHostView(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startListening() {
|
||||
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
|
||||
// have been established by this point, and we will end up populating the
|
||||
// widgets upon bind anyway. See issue 14255011 for more context.
|
||||
} else {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopListening() {
|
||||
super.stopListening();
|
||||
|
||||
Reference in New Issue
Block a user