diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2014-11-03 20:11:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-11-03 20:11:05 +0000 |
commit | 45634bf8fb5c9c59217795a620c4a36aced89a03 (patch) | |
tree | 2cca4f7aeea07b389a6248bbb59f946148f3cc9b | |
parent | 96d2cc235dff94d6109cd480fef13afbefa459f1 (diff) | |
parent | d90e938db0523c13f0301ea8cbb2cef4cf044efc (diff) | |
download | android_packages_apps_Trebuchet-45634bf8fb5c9c59217795a620c4a36aced89a03.tar.gz android_packages_apps_Trebuchet-45634bf8fb5c9c59217795a620c4a36aced89a03.tar.bz2 android_packages_apps_Trebuchet-45634bf8fb5c9c59217795a620c4a36aced89a03.zip |
Merge "Moving methods which update internal sets on a separate thread" into ub-now-queens
-rw-r--r-- | src/com/android/launcher3/compat/PackageInstallerCompatVL.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index a84bf0224..601f04cea 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller.SessionCallback; import android.content.pm.PackageInstaller.SessionInfo; +import android.os.Handler; import android.util.Log; import android.util.SparseArray; @@ -29,15 +30,18 @@ import com.android.launcher3.LauncherAppState; import java.util.ArrayList; import java.util.HashSet; -public class PackageInstallerCompatVL extends PackageInstallerCompat { +public class PackageInstallerCompatVL extends PackageInstallerCompat implements Runnable { private static final String TAG = "PackageInstallerCompatVL"; private static final boolean DEBUG = false; + // All updates to these sets must happen on the {@link #mWorker} thread. private final SparseArray<SessionInfo> mPendingReplays = new SparseArray<SessionInfo>(); private final HashSet<String> mPendingBadgeUpdates = new HashSet<String>(); + private final PackageInstaller mInstaller; private final IconCache mCache; + private final Handler mWorker; private boolean mResumed; private boolean mBound; @@ -46,16 +50,23 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { mInstaller = context.getPackageManager().getPackageInstaller(); LauncherAppState.setApplicationContext(context.getApplicationContext()); mCache = LauncherAppState.getInstance().getIconCache(); + mWorker = new Handler(); mResumed = false; mBound = false; - mInstaller.registerSessionCallback(mCallback); + mInstaller.registerSessionCallback(mCallback, mWorker); // On start, send updates for all active sessions - for (SessionInfo info : mInstaller.getAllSessions()) { - mPendingReplays.append(info.getSessionId(), info); - } + mWorker.post(new Runnable() { + + @Override + public void run() { + for (SessionInfo info : mInstaller.getAllSessions()) { + mPendingReplays.append(info.getSessionId(), info); + } + } + }); } @Override @@ -87,7 +98,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { @Override public void onFinishBind() { mBound = true; - replayUpdates(null); + mWorker.post(this); } @Override @@ -98,7 +109,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { @Override public void onResume() { mResumed = true; - replayUpdates(null); + mWorker.post(this); } @Override @@ -106,6 +117,12 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { // No op } + @Override + public void run() { + // Called on mWorker thread. + replayUpdates(null); + } + private void replayUpdates(PackageInstallInfo newInfo) { if (DEBUG) Log.d(TAG, "updates resumed"); if (!mResumed || !mBound) { |