summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat/UserManagerCompat.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-08-04 11:40:13 -0700
committerSunny Goyal <sunnygoyal@google.com>2015-08-04 12:37:05 -0700
commit823fd5090209017a029460e7dbd8ab9d51d013dd (patch)
tree9c8564ee6a098377aeb57b427bfeebbb6957355c /src/com/android/launcher3/compat/UserManagerCompat.java
parent317698bd012c1930b83bb4e2e47ac9e363fa6c6a (diff)
downloadandroid_packages_apps_Trebuchet-823fd5090209017a029460e7dbd8ab9d51d013dd.tar.gz
android_packages_apps_Trebuchet-823fd5090209017a029460e7dbd8ab9d51d013dd.tar.bz2
android_packages_apps_Trebuchet-823fd5090209017a029460e7dbd8ab9d51d013dd.zip
Creating a cache of users to avoid multiple calls to UserManager
Bug: 22805101 Change-Id: I9cd270efd74fdd34a7eb738fc25797e6f1bf2487
Diffstat (limited to 'src/com/android/launcher3/compat/UserManagerCompat.java')
-rw-r--r--src/com/android/launcher3/compat/UserManagerCompat.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/com/android/launcher3/compat/UserManagerCompat.java b/src/com/android/launcher3/compat/UserManagerCompat.java
index a79d94646..2ff1e7b74 100644
--- a/src/com/android/launcher3/compat/UserManagerCompat.java
+++ b/src/com/android/launcher3/compat/UserManagerCompat.java
@@ -28,16 +28,29 @@ public abstract class UserManagerCompat {
protected UserManagerCompat() {
}
+ private static final Object sInstanceLock = new Object();
+ private static UserManagerCompat sInstance;
+
public static UserManagerCompat getInstance(Context context) {
- if (Utilities.isLmpOrAbove()) {
- return new UserManagerCompatVL(context);
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- return new UserManagerCompatV17(context);
- } else {
- return new UserManagerCompatV16();
+ synchronized (sInstanceLock) {
+ if (sInstance == null) {
+ if (Utilities.isLmpOrAbove()) {
+ sInstance = new UserManagerCompatVL(context.getApplicationContext());
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ sInstance = new UserManagerCompatV17(context.getApplicationContext());
+ } else {
+ sInstance = new UserManagerCompatV16();
+ }
+ }
+ return sInstance;
}
}
+ /**
+ * Creates a cache for users.
+ */
+ public abstract void enableAndResetCache();
+
public abstract List<UserHandleCompat> getUserProfiles();
public abstract long getSerialNumberForUser(UserHandleCompat user);
public abstract UserHandleCompat getUserForSerialNumber(long serialNumber);