Loading src/com/android/launcher3/LauncherAppState.java +3 −0 Original line number Diff line number Diff line Loading @@ -20,11 +20,13 @@ import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.UserManager; import android.util.Log; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.util.Thunk; import java.lang.ref.WeakReference; Loading Loading @@ -100,6 +102,7 @@ public class LauncherAppState { filter.addAction(LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED); sContext.registerReceiver(mModel, filter); UserManagerCompat.getInstance(sContext).enableAndResetCache(); } /** Loading src/com/android/launcher3/LauncherModel.java +1 −0 Original line number Diff line number Diff line Loading @@ -1288,6 +1288,7 @@ public class LauncherModel extends BroadcastReceiver } } else if (LauncherAppsCompat.ACTION_MANAGED_PROFILE_ADDED.equals(action) || LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) { UserManagerCompat.getInstance(context).enableAndResetCache(); forceReload(); } } Loading src/com/android/launcher3/compat/UserManagerCompat.java +19 −6 Original line number Diff line number Diff line Loading @@ -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) { synchronized (sInstanceLock) { if (sInstance == null) { if (Utilities.isLmpOrAbove()) { return new UserManagerCompatVL(context); sInstance = new UserManagerCompatVL(context.getApplicationContext()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return new UserManagerCompatV17(context); sInstance = new UserManagerCompatV17(context.getApplicationContext()); } else { return new UserManagerCompatV16(); 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); Loading src/com/android/launcher3/compat/UserManagerCompatV16.java +4 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,8 @@ public class UserManagerCompatV16 extends UserManagerCompat { public long getUserCreationTime(UserHandleCompat user) { return 0; } @Override public void enableAndResetCache() { } } src/com/android/launcher3/compat/UserManagerCompatV17.java +24 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,12 @@ import android.content.Context; import android.os.Build; import android.os.UserManager; import com.android.launcher3.util.LongArrayMap; @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public class UserManagerCompatV17 extends UserManagerCompatV16 { protected LongArrayMap<UserHandleCompat> mUsers; protected UserManager mUserManager; UserManagerCompatV17(Context context) { Loading @@ -30,11 +34,31 @@ public class UserManagerCompatV17 extends UserManagerCompatV16 { } public long getSerialNumberForUser(UserHandleCompat user) { synchronized (this) { if (mUsers != null) { int index = mUsers.indexOfValue(user); return (index >= 0) ? mUsers.keyAt(index) : 0; } } return mUserManager.getSerialNumberForUser(user.getUser()); } public UserHandleCompat getUserForSerialNumber(long serialNumber) { synchronized (this) { if (mUsers != null) { return mUsers.get(serialNumber); } } return UserHandleCompat.fromUser(mUserManager.getUserForSerialNumber(serialNumber)); } @Override public void enableAndResetCache() { synchronized (this) { mUsers = new LongArrayMap<UserHandleCompat>(); UserHandleCompat myUser = UserHandleCompat.myUserHandle(); mUsers.put(mUserManager.getSerialNumberForUser(myUser.getUser()), myUser); } } } Loading
src/com/android/launcher3/LauncherAppState.java +3 −0 Original line number Diff line number Diff line Loading @@ -20,11 +20,13 @@ import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.UserManager; import android.util.Log; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.util.Thunk; import java.lang.ref.WeakReference; Loading Loading @@ -100,6 +102,7 @@ public class LauncherAppState { filter.addAction(LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED); sContext.registerReceiver(mModel, filter); UserManagerCompat.getInstance(sContext).enableAndResetCache(); } /** Loading
src/com/android/launcher3/LauncherModel.java +1 −0 Original line number Diff line number Diff line Loading @@ -1288,6 +1288,7 @@ public class LauncherModel extends BroadcastReceiver } } else if (LauncherAppsCompat.ACTION_MANAGED_PROFILE_ADDED.equals(action) || LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) { UserManagerCompat.getInstance(context).enableAndResetCache(); forceReload(); } } Loading
src/com/android/launcher3/compat/UserManagerCompat.java +19 −6 Original line number Diff line number Diff line Loading @@ -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) { synchronized (sInstanceLock) { if (sInstance == null) { if (Utilities.isLmpOrAbove()) { return new UserManagerCompatVL(context); sInstance = new UserManagerCompatVL(context.getApplicationContext()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return new UserManagerCompatV17(context); sInstance = new UserManagerCompatV17(context.getApplicationContext()); } else { return new UserManagerCompatV16(); 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); Loading
src/com/android/launcher3/compat/UserManagerCompatV16.java +4 −0 Original line number Diff line number Diff line Loading @@ -53,4 +53,8 @@ public class UserManagerCompatV16 extends UserManagerCompat { public long getUserCreationTime(UserHandleCompat user) { return 0; } @Override public void enableAndResetCache() { } }
src/com/android/launcher3/compat/UserManagerCompatV17.java +24 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,12 @@ import android.content.Context; import android.os.Build; import android.os.UserManager; import com.android.launcher3.util.LongArrayMap; @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public class UserManagerCompatV17 extends UserManagerCompatV16 { protected LongArrayMap<UserHandleCompat> mUsers; protected UserManager mUserManager; UserManagerCompatV17(Context context) { Loading @@ -30,11 +34,31 @@ public class UserManagerCompatV17 extends UserManagerCompatV16 { } public long getSerialNumberForUser(UserHandleCompat user) { synchronized (this) { if (mUsers != null) { int index = mUsers.indexOfValue(user); return (index >= 0) ? mUsers.keyAt(index) : 0; } } return mUserManager.getSerialNumberForUser(user.getUser()); } public UserHandleCompat getUserForSerialNumber(long serialNumber) { synchronized (this) { if (mUsers != null) { return mUsers.get(serialNumber); } } return UserHandleCompat.fromUser(mUserManager.getUserForSerialNumber(serialNumber)); } @Override public void enableAndResetCache() { synchronized (this) { mUsers = new LongArrayMap<UserHandleCompat>(); UserHandleCompat myUser = UserHandleCompat.myUserHandle(); mUsers.put(mUserManager.getSerialNumberForUser(myUser.getUser()), myUser); } } }