diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 28 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 2 |
2 files changed, 23 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b6c269ecf627..2d0cad386ba6 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -164,7 +164,6 @@ import android.content.pm.VerifierInfo; import android.content.res.Resources; import android.graphics.Bitmap; import android.hardware.display.DisplayManager; -import android.net.INetworkPolicyManager; import android.net.Uri; import android.os.Binder; import android.os.Build; @@ -1043,6 +1042,7 @@ public class PackageManagerService extends IPackageManager.Stub { static final int CHECK_PENDING_VERIFICATION = 16; static final int START_INTENT_FILTER_VERIFICATIONS = 17; static final int INTENT_FILTER_VERIFIED = 18; + static final int WRITE_PACKAGE_LIST = 19; static final int WRITE_SETTINGS_DELAY = 10*1000; // 10 seconds @@ -1665,6 +1665,14 @@ public class PackageManagerService extends IPackageManager.Stub { } Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); } break; + case WRITE_PACKAGE_LIST: { + Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); + synchronized (mPackages) { + removeMessages(WRITE_PACKAGE_LIST); + mSettings.writePackageListLPr(msg.arg1); + } + Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); + } break; case CHECK_PENDING_VERIFICATION: { final int verificationId = msg.arg1; final PackageVerificationState state = mPendingVerification.get(verificationId); @@ -2112,6 +2120,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } + void scheduleWritePackageListLocked(int userId) { + if (!mHandler.hasMessages(WRITE_PACKAGE_LIST)) { + Message msg = mHandler.obtainMessage(WRITE_PACKAGE_LIST); + msg.arg1 = userId; + mHandler.sendMessageDelayed(msg, WRITE_SETTINGS_DELAY); + } + } + void scheduleWritePackageRestrictionsLocked(UserHandle user) { final int userId = user == null ? UserHandle.USER_ALL : user.getIdentifier(); scheduleWritePackageRestrictionsLocked(userId); @@ -20039,13 +20055,15 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } /** Called by UserManagerService */ - void createNewUser(int userHandle) { + void createNewUser(int userId) { synchronized (mInstallLock) { - mSettings.createNewUserLI(this, mInstaller, userHandle); + mSettings.createNewUserLI(this, mInstaller, userId); } synchronized (mPackages) { - applyFactoryDefaultBrowserLPw(userHandle); - primeDomainVerificationsLPw(userHandle); + scheduleWritePackageRestrictionsLocked(userId); + scheduleWritePackageListLocked(userId); + applyFactoryDefaultBrowserLPw(userId); + primeDomainVerificationsLPw(userId); } } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 7fc0e8c13aca..75bd35c0eca4 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -4014,8 +4014,6 @@ final class Settings { } synchronized (mPackages) { applyDefaultPreferredAppsLPw(service, userHandle); - writePackageRestrictionsLPr(userHandle); - writePackageListLPr(userHandle); } } |