diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2015-08-04 11:40:13 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2015-08-04 12:37:05 -0700 |
commit | 823fd5090209017a029460e7dbd8ab9d51d013dd (patch) | |
tree | 9c8564ee6a098377aeb57b427bfeebbb6957355c /src/com/android/launcher3/compat/UserManagerCompat.java | |
parent | 317698bd012c1930b83bb4e2e47ac9e363fa6c6a (diff) | |
download | android_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.java | 25 |
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); |