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
This commit is contained in:
Todd Kennedy
2018-04-17 10:40:58 -07:00
parent bdaf85ebe6
commit a63d57ab65

View File

@@ -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.