Loading core/java/android/app/LoadedApk.java +2 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,8 @@ public final class LoadedApk { if (!Objects.equals(mPackageName, ActivityThread.currentPackageName())) { VMRuntime.getRuntime().vmInstructionSet(); try { ActivityThread.getPackageManager().notifyPackageUse(mPackageName); ActivityThread.getPackageManager().notifyPackageUse(mPackageName, PackageManager.NOTIFY_PACKAGE_USE_CROSS_PACKAGE); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } Loading core/java/android/content/pm/IPackageManager.aidl +4 −2 Original line number Diff line number Diff line Loading @@ -451,9 +451,11 @@ interface IPackageManager { void updatePackagesIfNeeded(); /** * Notify the package manager that a package is going to be used. * Notify the package manager that a package is going to be used and why. * * See PackageManager.NOTIFY_PACKAGE_USE_* for reasons. */ void notifyPackageUse(String packageName); void notifyPackageUse(String packageName, int reason); /** * Ask the package manager to perform dex-opt (if needed) on the given Loading core/java/android/content/pm/PackageManager.java +63 −0 Original line number Diff line number Diff line Loading @@ -2455,6 +2455,69 @@ public abstract class PackageManager { */ public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared"; /** * Used when starting a process for an Activity. * * @hide */ public static final int NOTIFY_PACKAGE_USE_ACTIVITY = 0; /** * Used when starting a process for a Service. * * @hide */ public static final int NOTIFY_PACKAGE_USE_SERVICE = 1; /** * Used when moving a Service to the foreground. * * @hide */ public static final int NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE = 2; /** * Used when starting a process for a BroadcastReceiver. * * @hide */ public static final int NOTIFY_PACKAGE_USE_BROADCAST_RECEIVER = 3; /** * Used when starting a process for a ContentProvider. * * @hide */ public static final int NOTIFY_PACKAGE_USE_CONTENT_PROVIDER = 4; /** * Used when starting a process for a BroadcastReceiver. * * @hide */ public static final int NOTIFY_PACKAGE_USE_BACKUP = 5; /** * Used with Context.getClassLoader() across Android packages. * * @hide */ public static final int NOTIFY_PACKAGE_USE_CROSS_PACKAGE = 6; /** * Used when starting a package within a process for Instrumentation. * * @hide */ public static final int NOTIFY_PACKAGE_USE_INSTRUMENTATION = 7; /** * Total number of usage reasons. * * @hide */ public static final int NOTIFY_PACKAGE_USE_REASONS_COUNT = 8; /** * Retrieve overall information about an application package that is * installed on the system. Loading core/java/android/content/pm/PackageParser.java +10 −1 Original line number Diff line number Diff line Loading @@ -4756,7 +4756,8 @@ public class PackageParser { public int mPreferredOrder = 0; // For use by package manager to keep track of when a package was last used. public long mLastPackageUsageTimeInMills; public long[] mLastPackageUsageTimeInMills = new long[PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT]; // // User set enabled state. // public int mSetEnabled = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; Loading Loading @@ -5086,6 +5087,14 @@ public class PackageParser { return true; } public long getLatestPackageUseTimeInMills() { long latestUse = 0L; for (long use : mLastPackageUsageTimeInMills) { latestUse = Math.max(latestUse, use); } return latestUse; } public String toString() { return "Package{" + Integer.toHexString(System.identityHashCode(this)) Loading services/core/java/com/android/server/am/ActiveServices.java +4 −1 Original line number Diff line number Diff line Loading @@ -711,6 +711,8 @@ public final class ActiveServices { updateServiceForegroundLocked(r.app, true); } getServiceMap(r.userId).ensureNotStartingBackground(r); mAm.notifyPackageUse(r.serviceInfo.packageName, PackageManager.NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE); } else { if (r.isForeground) { r.isForeground = false; Loading Loading @@ -1756,7 +1758,8 @@ public final class ActiveServices { synchronized (r.stats.getBatteryStats()) { r.stats.startLaunchedLocked(); } mAm.notifyPackageUse(r.serviceInfo.packageName); mAm.notifyPackageUse(r.serviceInfo.packageName, PackageManager.NOTIFY_PACKAGE_USE_SERVICE); app.forceProcessStateUpTo(ActivityManager.PROCESS_STATE_SERVICE); app.thread.scheduleCreateService(r, r.serviceInfo, mAm.compatibilityInfoForPackageLocked(r.serviceInfo.applicationInfo), Loading Loading
core/java/android/app/LoadedApk.java +2 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,8 @@ public final class LoadedApk { if (!Objects.equals(mPackageName, ActivityThread.currentPackageName())) { VMRuntime.getRuntime().vmInstructionSet(); try { ActivityThread.getPackageManager().notifyPackageUse(mPackageName); ActivityThread.getPackageManager().notifyPackageUse(mPackageName, PackageManager.NOTIFY_PACKAGE_USE_CROSS_PACKAGE); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } Loading
core/java/android/content/pm/IPackageManager.aidl +4 −2 Original line number Diff line number Diff line Loading @@ -451,9 +451,11 @@ interface IPackageManager { void updatePackagesIfNeeded(); /** * Notify the package manager that a package is going to be used. * Notify the package manager that a package is going to be used and why. * * See PackageManager.NOTIFY_PACKAGE_USE_* for reasons. */ void notifyPackageUse(String packageName); void notifyPackageUse(String packageName, int reason); /** * Ask the package manager to perform dex-opt (if needed) on the given Loading
core/java/android/content/pm/PackageManager.java +63 −0 Original line number Diff line number Diff line Loading @@ -2455,6 +2455,69 @@ public abstract class PackageManager { */ public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared"; /** * Used when starting a process for an Activity. * * @hide */ public static final int NOTIFY_PACKAGE_USE_ACTIVITY = 0; /** * Used when starting a process for a Service. * * @hide */ public static final int NOTIFY_PACKAGE_USE_SERVICE = 1; /** * Used when moving a Service to the foreground. * * @hide */ public static final int NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE = 2; /** * Used when starting a process for a BroadcastReceiver. * * @hide */ public static final int NOTIFY_PACKAGE_USE_BROADCAST_RECEIVER = 3; /** * Used when starting a process for a ContentProvider. * * @hide */ public static final int NOTIFY_PACKAGE_USE_CONTENT_PROVIDER = 4; /** * Used when starting a process for a BroadcastReceiver. * * @hide */ public static final int NOTIFY_PACKAGE_USE_BACKUP = 5; /** * Used with Context.getClassLoader() across Android packages. * * @hide */ public static final int NOTIFY_PACKAGE_USE_CROSS_PACKAGE = 6; /** * Used when starting a package within a process for Instrumentation. * * @hide */ public static final int NOTIFY_PACKAGE_USE_INSTRUMENTATION = 7; /** * Total number of usage reasons. * * @hide */ public static final int NOTIFY_PACKAGE_USE_REASONS_COUNT = 8; /** * Retrieve overall information about an application package that is * installed on the system. Loading
core/java/android/content/pm/PackageParser.java +10 −1 Original line number Diff line number Diff line Loading @@ -4756,7 +4756,8 @@ public class PackageParser { public int mPreferredOrder = 0; // For use by package manager to keep track of when a package was last used. public long mLastPackageUsageTimeInMills; public long[] mLastPackageUsageTimeInMills = new long[PackageManager.NOTIFY_PACKAGE_USE_REASONS_COUNT]; // // User set enabled state. // public int mSetEnabled = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; Loading Loading @@ -5086,6 +5087,14 @@ public class PackageParser { return true; } public long getLatestPackageUseTimeInMills() { long latestUse = 0L; for (long use : mLastPackageUsageTimeInMills) { latestUse = Math.max(latestUse, use); } return latestUse; } public String toString() { return "Package{" + Integer.toHexString(System.identityHashCode(this)) Loading
services/core/java/com/android/server/am/ActiveServices.java +4 −1 Original line number Diff line number Diff line Loading @@ -711,6 +711,8 @@ public final class ActiveServices { updateServiceForegroundLocked(r.app, true); } getServiceMap(r.userId).ensureNotStartingBackground(r); mAm.notifyPackageUse(r.serviceInfo.packageName, PackageManager.NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE); } else { if (r.isForeground) { r.isForeground = false; Loading Loading @@ -1756,7 +1758,8 @@ public final class ActiveServices { synchronized (r.stats.getBatteryStats()) { r.stats.startLaunchedLocked(); } mAm.notifyPackageUse(r.serviceInfo.packageName); mAm.notifyPackageUse(r.serviceInfo.packageName, PackageManager.NOTIFY_PACKAGE_USE_SERVICE); app.forceProcessStateUpTo(ActivityManager.PROCESS_STATE_SERVICE); app.thread.scheduleCreateService(r, r.serviceInfo, mAm.compatibilityInfoForPackageLocked(r.serviceInfo.applicationInfo), Loading