Merge "Register the DexLoadReporter before creating the main class loader"
This commit is contained in:
@@ -886,6 +886,21 @@ public final class LoadedApk {
|
|||||||
|
|
||||||
boolean registerAppInfoToArt = false;
|
boolean registerAppInfoToArt = false;
|
||||||
if (mDefaultClassLoader == null) {
|
if (mDefaultClassLoader == null) {
|
||||||
|
// Setup the dex reporter to notify package manager
|
||||||
|
// of any relevant dex loads. The idle maintenance job will use the information
|
||||||
|
// reported to optimize the loaded dex files.
|
||||||
|
// Note that we only need one global reporter per app.
|
||||||
|
// Make sure we do this before creating the main app classloader for the first time
|
||||||
|
// so that we can capture the complete application startup.
|
||||||
|
//
|
||||||
|
// We should not do this in a zygote context (where mActivityThread will be null),
|
||||||
|
// thus we'll guard against it.
|
||||||
|
// Also, the system server reporter (SystemServerDexLoadReporter) is already registered
|
||||||
|
// when system server starts, so we don't need to do it here again.
|
||||||
|
if (mActivityThread != null && !ActivityThread.isSystem()) {
|
||||||
|
BaseDexClassLoader.setReporter(DexLoadReporter.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
// Temporarily disable logging of disk reads on the Looper thread
|
// Temporarily disable logging of disk reads on the Looper thread
|
||||||
// as this is early and necessary.
|
// as this is early and necessary.
|
||||||
StrictMode.ThreadPolicy oldPolicy = allowThreadDiskReads();
|
StrictMode.ThreadPolicy oldPolicy = allowThreadDiskReads();
|
||||||
@@ -985,14 +1000,6 @@ public final class LoadedApk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerAppInfoToArt() {
|
private void registerAppInfoToArt() {
|
||||||
// Setup the dex reporter to notify package manager
|
|
||||||
// of any relevant dex loads. The idle maintenance job will use the information
|
|
||||||
// reported to optimize the loaded dex files.
|
|
||||||
// Note that we only need one global reporter per app.
|
|
||||||
// Make sure we do this before invoking app code for the first time so that we
|
|
||||||
// can capture the complete application startup.
|
|
||||||
BaseDexClassLoader.setReporter(DexLoadReporter.getInstance());
|
|
||||||
|
|
||||||
// Only set up profile support if the loaded apk has the same uid as the
|
// Only set up profile support if the loaded apk has the same uid as the
|
||||||
// current process.
|
// current process.
|
||||||
// Currently, we do not support profiling across different apps.
|
// Currently, we do not support profiling across different apps.
|
||||||
|
|||||||
Reference in New Issue
Block a user