Fixing missing updates in package install sessions
> Ensure icon cache never returns null icon
> Enabling install shortuct receiver only after workspace has finished binding
> Making all the model changes for package installs on worker thread and only
posting the updaes on the UI
> Making shortcut exists check on the loaded items and not on the DB
> Explicitely using worker thread for PckageInstallListener
> Removing backward compatibility support from PackageInstallerCompat
Change-Id: I9592771b9670c1c1c84c8208cae8dafa7b393e65
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7364a9f..2084477 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -98,8 +98,6 @@
import com.android.launcher3.compat.AppWidgetManagerCompat;
import com.android.launcher3.compat.LauncherActivityInfoCompat;
import com.android.launcher3.compat.LauncherAppsCompat;
-import com.android.launcher3.compat.PackageInstallerCompat;
-import com.android.launcher3.compat.PackageInstallerCompat.PackageInstallInfo;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.util.Thunk;
@@ -1060,9 +1058,6 @@
getWorkspace().reinflateWidgetsIfNecessary();
reinflateQSBIfNecessary();
- // Process any items that were added while Launcher was away.
- InstallShortcutReceiver.disableAndFlushInstallQueue(this);
-
if (DEBUG_RESUME_TIME) {
Log.d(TAG, "Time spent in onResume: " + (System.currentTimeMillis() - startTime));
}
@@ -1078,7 +1073,10 @@
mWorkspace.updateInteractionForState();
mWorkspace.onResume();
- PackageInstallerCompat.getInstance(this).onResume();
+ if (!isWorkspaceLoading()) {
+ // Process any items that were added while Launcher was away.
+ InstallShortcutReceiver.disableAndFlushInstallQueue(this);
+ }
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onResume();
@@ -1089,7 +1087,6 @@
protected void onPause() {
// Ensure that items added to Launcher are queued until Launcher returns
InstallShortcutReceiver.enableInstallQueue();
- PackageInstallerCompat.getInstance(this).onPause();
super.onPause();
mPaused = true;
@@ -4084,7 +4081,7 @@
sPendingAddItem = null;
}
- PackageInstallerCompat.getInstance(this).onFinishBind();
+ InstallShortcutReceiver.disableAndFlushInstallQueue(this);
if (mLauncherCallbacks != null) {
mLauncherCallbacks.finishBindingItems(false);
@@ -4236,22 +4233,17 @@
* Implementation of the method from LauncherModel.Callbacks.
*/
@Override
- public void updatePackageState(ArrayList<PackageInstallInfo> installInfo) {
- if (mWorkspace != null) {
- mWorkspace.updatePackageState(installInfo);
+ public void bindRestoreItemsChange(final HashSet<ItemInfo> updates) {
+ Runnable r = new Runnable() {
+ public void run() {
+ bindRestoreItemsChange(updates);
+ }
+ };
+ if (waitUntilResume(r)) {
+ return;
}
- }
- /**
- * Update the label and icon of all the icons in a package
- *
- * Implementation of the method from LauncherModel.Callbacks.
- */
- @Override
- public void updatePackageBadge(String packageName) {
- if (mWorkspace != null) {
- mWorkspace.updatePackageBadge(packageName, UserHandleCompat.myUserHandle());
- }
+ mWorkspace.updateRestoreItems(updates);
}
/**