diff options
| author | 2021-02-17 18:13:56 -0800 | |
|---|---|---|
| committer | 2021-02-17 18:13:56 -0800 | |
| commit | f05208818a07e1d80665a4a391b5b04d57e7a710 (patch) | |
| tree | 109b339ba515892111a5c31de31cbdcdf818d19e | |
| parent | c2d6240642852362dc6e255d6396b9065e79762c (diff) | |
Check user states exist before package add/removal
It's possible for packages to be added/removed for a user even if they
are not yet unlocked. This could cause a NPE, so we check beforehand and
ignore if the the user states have not been initialized. This is fine
because on user unlock, we get the most up to date package data anyway.
Bug: 175829330
Test: atest AppHibernationService
Change-Id: Ia29359d38325be5a40d84237fd7fc1b5ba356c5d
| -rw-r--r-- | services/core/java/com/android/server/apphibernation/AppHibernationService.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java index e97f0b47380a..d98057dc87cc 100644 --- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java +++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java @@ -421,6 +421,9 @@ public final class AppHibernationService extends SystemService { private void onPackageAdded(@NonNull String packageName, int userId) { synchronized (mLock) { + if (!mUserStates.contains(userId)) { + return; + } UserLevelState userState = new UserLevelState(); userState.packageName = packageName; mUserStates.get(userId).put(packageName, userState); @@ -434,6 +437,9 @@ public final class AppHibernationService extends SystemService { private void onPackageRemoved(@NonNull String packageName, int userId) { synchronized (mLock) { + if (!mUserStates.contains(userId)) { + return; + } mUserStates.get(userId).remove(packageName); } } |