diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2014-11-03 20:14:24 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-11-03 20:14:24 +0000 |
commit | 4595870a98d38d8735c7fc30ba9f4317125ec369 (patch) | |
tree | 101969bca1f92b5d41f2a6496877023d3c89c37b | |
parent | a380f06d396bcfec94d5e272bf614cd5fc0ce776 (diff) | |
parent | 45634bf8fb5c9c59217795a620c4a36aced89a03 (diff) | |
download | android_packages_apps_Trebuchet-4595870a98d38d8735c7fc30ba9f4317125ec369.tar.gz android_packages_apps_Trebuchet-4595870a98d38d8735c7fc30ba9f4317125ec369.tar.bz2 android_packages_apps_Trebuchet-4595870a98d38d8735c7fc30ba9f4317125ec369.zip |
am 45634bf8: Merge "Moving methods which update internal sets on a separate thread" into ub-now-queens
* commit '45634bf8fb5c9c59217795a620c4a36aced89a03':
Moving methods which update internal sets on a separate thread
-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) { |