diff options
| author | 2018-04-17 10:40:58 -0700 | |
|---|---|---|
| committer | 2018-04-17 10:40:58 -0700 | |
| commit | a63d57ab65eea9c74c12fde7fd970fd6f67579ae (patch) | |
| tree | 25b57d4b35204f5c77051048eae23a5ffc7c378f | |
| parent | bdaf85ebe6c5897b9508f7ac9eb8409e95714941 (diff) | |
Load fallback categories earlier
At the end of the package manager constructor, we are prepare the data
directories for all installed applications. This creates ApplicationInfo
objects which needs to load categories from the fallback categories provider.
If we're populating the fallback categories during this time, there's a
subtle timing issue where we may return a 'null' category instead of an
Integer.
Change-Id: I974a39029d6c15d3986571e610eb0cd106fdc05c
Fixes: 78128442
Test: Manual. System boots and no crash
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 26d4037b4656..cfe7e4b13998 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2499,6 +2499,10 @@ public class PackageManagerService extends IPackageManager.Stub SELinuxMMAC.readInstallPolicy(); + Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "loadFallbacks"); + FallbackCategoryProvider.loadFallbacks(); + Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); + Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "read user settings"); mFirstBoot = !mSettings.readLPw(sUserManager.getUsers(false)); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); @@ -3239,10 +3243,6 @@ public class PackageManagerService extends IPackageManager.Stub Runtime.getRuntime().gc(); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); - Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "loadFallbacks"); - FallbackCategoryProvider.loadFallbacks(); - Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); - // The initial scanning above does many calls into installd while // holding the mPackages lock, but we're mostly interested in yelling // once we have a booted system. |