Simplifying pending widget inflation path
Instead of adding a PendingView in appWidgetHost, attaching a
listener in PendingView for widget-updates.
This moves the view inflation as the last stage of widget
binding. Eventually we can separate the model update and view
inflation to different threads
Bug: 318539160
Test: atest TaplBinderTests
Flag: None
Change-Id: I124edaa9622fa367302b80969036d128a978396e
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index e0e35a4..5c49b89 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1011,7 +1011,7 @@
AppWidgetHostView boundWidget = null;
if (resultCode == RESULT_OK) {
animationType = Workspace.COMPLETE_TWO_STAGE_WIDGET_DROP_ANIMATION;
- final AppWidgetHostView layout = mAppWidgetHolder.createView(this, appWidgetId,
+ final AppWidgetHostView layout = mAppWidgetHolder.createView(appWidgetId,
requestArgs.getWidgetHandler().getProviderInfo(this));
boundWidget = layout;
onCompleteRunnable = () -> {
@@ -1464,7 +1464,7 @@
if (hostView == null) {
// Perform actual inflation because we're live
- hostView = mAppWidgetHolder.createView(this, appWidgetId, appWidgetInfo);
+ hostView = mAppWidgetHolder.createView(appWidgetId, appWidgetInfo);
}
LauncherAppWidgetInfo launcherInfo;
@@ -2319,7 +2319,7 @@
}
final AppWidgetHostView view;
if (mIsSafeModeEnabled) {
- view = new PendingAppWidgetHostView(this, item, mIconCache, true);
+ view = new PendingAppWidgetHostView(this, item, null, true);
prepareAppWidget(view, item);
return view;
}
@@ -2450,14 +2450,9 @@
item.minSpanX = appWidgetInfo.minSpanX;
item.minSpanY = appWidgetInfo.minSpanY;
- view = mAppWidgetHolder.createView(this, item.appWidgetId, appWidgetInfo);
- } else if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)
- && appWidgetInfo != null) {
- mAppWidgetHolder.addPendingView(item.appWidgetId,
- new PendingAppWidgetHostView(this, item, mIconCache, false));
- view = mAppWidgetHolder.createView(this, item.appWidgetId, appWidgetInfo);
+ view = mAppWidgetHolder.createView(item.appWidgetId, appWidgetInfo);
} else {
- view = new PendingAppWidgetHostView(this, item, mIconCache, false);
+ view = new PendingAppWidgetHostView(this, item, appWidgetInfo, false);
}
prepareAppWidget(view, item);
} finally {