summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2014-11-03 20:11:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-11-03 20:11:05 +0000
commit45634bf8fb5c9c59217795a620c4a36aced89a03 (patch)
tree2cca4f7aeea07b389a6248bbb59f946148f3cc9b /src/com
parent96d2cc235dff94d6109cd480fef13afbefa459f1 (diff)
parentd90e938db0523c13f0301ea8cbb2cef4cf044efc (diff)
downloadandroid_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
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java31
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) {