Loading services/core/java/com/android/server/pm/DexOptHelper.java +34 −0 Original line number Diff line number Diff line Loading @@ -45,11 +45,15 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApexStagedEvent; import android.content.pm.IPackageManagerNative; import android.content.pm.IStagedApexObserver; import android.content.pm.ResolveInfo; import android.content.pm.SharedLibraryInfo; import android.content.pm.dex.ArtManager; import android.os.Binder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.Trace; Loading Loading @@ -1046,6 +1050,8 @@ public final class DexOptHelper { artManager.scheduleBackgroundDexoptJob(); } }, new IntentFilter(Intent.ACTION_LOCKED_BOOT_COMPLETED)); StagedApexObserver.registerForStagedApexUpdates(artManager); } /** Loading Loading @@ -1091,4 +1097,32 @@ public final class DexOptHelper { + " has unsupported status " + status); } } private static class StagedApexObserver extends IStagedApexObserver.Stub { private final @NonNull ArtManagerLocal mArtManager; static void registerForStagedApexUpdates(@NonNull ArtManagerLocal artManager) { IPackageManagerNative packageNative = IPackageManagerNative.Stub.asInterface( ServiceManager.getService("package_native")); if (packageNative == null) { Log.e(TAG, "No IPackageManagerNative"); return; } try { packageNative.registerStagedApexObserver(new StagedApexObserver(artManager)); } catch (RemoteException e) { Log.e(TAG, "Failed to register staged apex observer", e); } } private StagedApexObserver(@NonNull ArtManagerLocal artManager) { mArtManager = artManager; } @Override public void onApexStaged(@NonNull ApexStagedEvent event) { mArtManager.onApexStaged(event.stagedApexModuleNames); } } } Loading
services/core/java/com/android/server/pm/DexOptHelper.java +34 −0 Original line number Diff line number Diff line Loading @@ -45,11 +45,15 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApexStagedEvent; import android.content.pm.IPackageManagerNative; import android.content.pm.IStagedApexObserver; import android.content.pm.ResolveInfo; import android.content.pm.SharedLibraryInfo; import android.content.pm.dex.ArtManager; import android.os.Binder; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.Trace; Loading Loading @@ -1046,6 +1050,8 @@ public final class DexOptHelper { artManager.scheduleBackgroundDexoptJob(); } }, new IntentFilter(Intent.ACTION_LOCKED_BOOT_COMPLETED)); StagedApexObserver.registerForStagedApexUpdates(artManager); } /** Loading Loading @@ -1091,4 +1097,32 @@ public final class DexOptHelper { + " has unsupported status " + status); } } private static class StagedApexObserver extends IStagedApexObserver.Stub { private final @NonNull ArtManagerLocal mArtManager; static void registerForStagedApexUpdates(@NonNull ArtManagerLocal artManager) { IPackageManagerNative packageNative = IPackageManagerNative.Stub.asInterface( ServiceManager.getService("package_native")); if (packageNative == null) { Log.e(TAG, "No IPackageManagerNative"); return; } try { packageNative.registerStagedApexObserver(new StagedApexObserver(artManager)); } catch (RemoteException e) { Log.e(TAG, "Failed to register staged apex observer", e); } } private StagedApexObserver(@NonNull ArtManagerLocal artManager) { mArtManager = artManager; } @Override public void onApexStaged(@NonNull ApexStagedEvent event) { mArtManager.onApexStaged(event.stagedApexModuleNames); } } }