Loading core/java/android/app/ActivityManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ import com.android.internal.os.TransferPipe; import com.android.internal.util.FastPrintWriter; import com.android.internal.util.MemInfoReader; import com.android.internal.util.Preconditions; import com.android.internal.util.RateLimitingCache; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.LocalServices; Loading Loading @@ -228,6 +229,10 @@ public class ActivityManager { final ArrayMap<OnUidImportanceListener, MyUidObserver> mImportanceListeners = new ArrayMap<>(); /** Rate-Limiting Cache that allows no more than 400 calls to the service per second. */ private static final RateLimitingCache<List<RunningAppProcessInfo>> mRunningProcessesCache = new RateLimitingCache<>(10, 4); /** * Map of callbacks that have registered for {@link UidFrozenStateChanged} events. * Will be called when a Uid has become frozen or unfrozen. Loading Loading @@ -4213,6 +4218,16 @@ public class ActivityManager { * specified. */ public List<RunningAppProcessInfo> getRunningAppProcesses() { if (!Flags.rateLimitGetRunningAppProcesses()) { return getRunningAppProcessesInternal(); } else { return mRunningProcessesCache.get(() -> { return getRunningAppProcessesInternal(); }); } } private List<RunningAppProcessInfo> getRunningAppProcessesInternal() { try { return getService().getRunningAppProcesses(); } catch (RemoteException e) { Loading core/java/android/app/activity_manager.aconfig +12 −0 Original line number Diff line number Diff line Loading @@ -81,3 +81,15 @@ flag { purpose: PURPOSE_BUGFIX } } flag { namespace: "backstage_power" name: "rate_limit_get_running_app_processes" description: "Rate limit calls to getRunningAppProcesses using a cache" is_fixed_read_only: true bug: "360374604" metadata { purpose: PURPOSE_BUGFIX } } Loading
core/java/android/app/ActivityManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ import com.android.internal.os.TransferPipe; import com.android.internal.util.FastPrintWriter; import com.android.internal.util.MemInfoReader; import com.android.internal.util.Preconditions; import com.android.internal.util.RateLimitingCache; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.LocalServices; Loading Loading @@ -228,6 +229,10 @@ public class ActivityManager { final ArrayMap<OnUidImportanceListener, MyUidObserver> mImportanceListeners = new ArrayMap<>(); /** Rate-Limiting Cache that allows no more than 400 calls to the service per second. */ private static final RateLimitingCache<List<RunningAppProcessInfo>> mRunningProcessesCache = new RateLimitingCache<>(10, 4); /** * Map of callbacks that have registered for {@link UidFrozenStateChanged} events. * Will be called when a Uid has become frozen or unfrozen. Loading Loading @@ -4213,6 +4218,16 @@ public class ActivityManager { * specified. */ public List<RunningAppProcessInfo> getRunningAppProcesses() { if (!Flags.rateLimitGetRunningAppProcesses()) { return getRunningAppProcessesInternal(); } else { return mRunningProcessesCache.get(() -> { return getRunningAppProcessesInternal(); }); } } private List<RunningAppProcessInfo> getRunningAppProcessesInternal() { try { return getService().getRunningAppProcesses(); } catch (RemoteException e) { Loading
core/java/android/app/activity_manager.aconfig +12 −0 Original line number Diff line number Diff line Loading @@ -81,3 +81,15 @@ flag { purpose: PURPOSE_BUGFIX } } flag { namespace: "backstage_power" name: "rate_limit_get_running_app_processes" description: "Rate limit calls to getRunningAppProcesses using a cache" is_fixed_read_only: true bug: "360374604" metadata { purpose: PURPOSE_BUGFIX } }