Loading core/java/android/app/ActivityManagerInternal.java +164 −1 Original line number Diff line number Diff line Loading @@ -343,7 +343,170 @@ public abstract class ActivityManagerInternal { */ public abstract boolean hasRunningActivity(int uid, @Nullable String packageName); public abstract void updateOomAdj(); /** * Oom Adj Reason: none - internal use only, do not use it. * @hide */ public static final int OOM_ADJ_REASON_NONE = 0; /** * Oom Adj Reason: activity changes. * @hide */ public static final int OOM_ADJ_REASON_ACTIVITY = 1; /** * Oom Adj Reason: finishing a broadcast receiver. * @hide */ public static final int OOM_ADJ_REASON_FINISH_RECEIVER = 2; /** * Oom Adj Reason: starting a broadcast receiver. * @hide */ public static final int OOM_ADJ_REASON_START_RECEIVER = 3; /** * Oom Adj Reason: binding to a service. * @hide */ public static final int OOM_ADJ_REASON_BIND_SERVICE = 4; /** * Oom Adj Reason: unbinding from a service. * @hide */ public static final int OOM_ADJ_REASON_UNBIND_SERVICE = 5; /** * Oom Adj Reason: starting a service. * @hide */ public static final int OOM_ADJ_REASON_START_SERVICE = 6; /** * Oom Adj Reason: connecting to a content provider. * @hide */ public static final int OOM_ADJ_REASON_GET_PROVIDER = 7; /** * Oom Adj Reason: disconnecting from a content provider. * @hide */ public static final int OOM_ADJ_REASON_REMOVE_PROVIDER = 8; /** * Oom Adj Reason: UI visibility changes. * @hide */ public static final int OOM_ADJ_REASON_UI_VISIBILITY = 9; /** * Oom Adj Reason: device power allowlist changes. * @hide */ public static final int OOM_ADJ_REASON_ALLOWLIST = 10; /** * Oom Adj Reason: starting a process. * @hide */ public static final int OOM_ADJ_REASON_PROCESS_BEGIN = 11; /** * Oom Adj Reason: ending a process. * @hide */ public static final int OOM_ADJ_REASON_PROCESS_END = 12; /** * Oom Adj Reason: short FGS timeout. * @hide */ public static final int OOM_ADJ_REASON_SHORT_FGS_TIMEOUT = 13; /** * Oom Adj Reason: system initialization. * @hide */ public static final int OOM_ADJ_REASON_SYSTEM_INIT = 14; /** * Oom Adj Reason: backup/restore. * @hide */ public static final int OOM_ADJ_REASON_BACKUP = 15; /** * Oom Adj Reason: instrumented by the SHELL. * @hide */ public static final int OOM_ADJ_REASON_SHELL = 16; /** * Oom Adj Reason: task stack is being removed. */ public static final int OOM_ADJ_REASON_REMOVE_TASK = 17; /** * Oom Adj Reason: uid idle. */ public static final int OOM_ADJ_REASON_UID_IDLE = 18; /** * Oom Adj Reason: stop service. */ public static final int OOM_ADJ_REASON_STOP_SERVICE = 19; /** * Oom Adj Reason: executing service. */ public static final int OOM_ADJ_REASON_EXECUTING_SERVICE = 20; /** * Oom Adj Reason: background restriction changes. */ public static final int OOM_ADJ_REASON_RESTRICTION_CHANGE = 21; /** * Oom Adj Reason: A package or its component is disabled. */ public static final int OOM_ADJ_REASON_COMPONENT_DISABLED = 22; @IntDef(prefix = {"OOM_ADJ_REASON_"}, value = { OOM_ADJ_REASON_NONE, OOM_ADJ_REASON_ACTIVITY, OOM_ADJ_REASON_FINISH_RECEIVER, OOM_ADJ_REASON_START_RECEIVER, OOM_ADJ_REASON_BIND_SERVICE, OOM_ADJ_REASON_UNBIND_SERVICE, OOM_ADJ_REASON_START_SERVICE, OOM_ADJ_REASON_GET_PROVIDER, OOM_ADJ_REASON_REMOVE_PROVIDER, OOM_ADJ_REASON_UI_VISIBILITY, OOM_ADJ_REASON_ALLOWLIST, OOM_ADJ_REASON_PROCESS_BEGIN, OOM_ADJ_REASON_PROCESS_END, OOM_ADJ_REASON_SHORT_FGS_TIMEOUT, OOM_ADJ_REASON_SYSTEM_INIT, OOM_ADJ_REASON_BACKUP, OOM_ADJ_REASON_SHELL, OOM_ADJ_REASON_REMOVE_TASK, OOM_ADJ_REASON_UID_IDLE, OOM_ADJ_REASON_STOP_SERVICE, OOM_ADJ_REASON_EXECUTING_SERVICE, OOM_ADJ_REASON_RESTRICTION_CHANGE, OOM_ADJ_REASON_COMPONENT_DISABLED, }) @Retention(RetentionPolicy.SOURCE) public @interface OomAdjReason {} /** * Request to update oom adj. */ public abstract void updateOomAdj(@OomAdjReason int oomAdjReason); public abstract void updateCpuStats(); /** Loading services/core/java/com/android/server/am/ActiveServices.java +58 −40 Original line number Diff line number Diff line Loading @@ -26,6 +26,17 @@ import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_HEAVY_WEIGHT; import static android.app.ActivityManager.PROCESS_STATE_RECEIVER; import static android.app.ActivityManager.PROCESS_STATE_TOP; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_BIND_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_COMPONENT_DISABLED; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_EXECUTING_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_NONE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_PROCESS_END; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_REMOVE_TASK; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_SHORT_FGS_TIMEOUT; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_STOP_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_UID_IDLE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_UNBIND_SERVICE; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_DEPRECATED; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_DISABLED; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_OK; Loading Loading @@ -117,6 +128,7 @@ import android.annotation.UptimeMillisLong; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.ActivityManagerInternal.OomAdjReason; import android.app.ActivityManagerInternal.ServiceNotificationPolicy; import android.app.ActivityThread; import android.app.AppGlobals; Loading Loading @@ -1146,7 +1158,7 @@ public final class ActiveServices { } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked( OomAdjuster.OOM_ADJ_REASON_START_SERVICE); OOM_ADJ_REASON_START_SERVICE); } } else { unbindServiceLocked(connection); Loading Loading @@ -1236,8 +1248,7 @@ public final class ActiveServices { /* ignore - local call */ } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked( OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } else { // Starting a service try { Loading Loading @@ -1311,7 +1322,7 @@ public final class ActiveServices { false /* packageFrozen */, true /* enqueueOomAdj */); /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); if (error != null) { return new ComponentName("!!", error); } Loading Loading @@ -1496,7 +1507,7 @@ public final class ActiveServices { stopServiceLocked(service, true); } if (size > 0) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_UID_IDLE); } } } Loading Loading @@ -3296,7 +3307,7 @@ public final class ActiveServices { Slog.e(TAG_SERVICE, "Short FGS procstate demoted: " + sr); mAm.updateOomAdjLocked(sr.app, OomAdjuster.OOM_ADJ_REASON_SHORT_FGS_TIMEOUT); mAm.updateOomAdjLocked(sr.app, OOM_ADJ_REASON_SHORT_FGS_TIMEOUT); } } Loading Loading @@ -3630,7 +3641,7 @@ public final class ActiveServices { needOomAdj = true; if (bringUpServiceLocked(s, service.getFlags(), callerFg, false, permissionsReviewRequired, packageFrozen, true) != null) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_BIND_SERVICE); return 0; } } Loading @@ -3655,7 +3666,7 @@ public final class ActiveServices { mAm.enqueueOomAdjTargetLocked(s.app); } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_BIND_SERVICE); } final int packageState = wasStopped Loading Loading @@ -3787,7 +3798,8 @@ public final class ActiveServices { } } serviceDoneExecutingLocked(r, mDestroyingServices.contains(r), false, false); serviceDoneExecutingLocked(r, mDestroyingServices.contains(r), false, false, OOM_ADJ_REASON_EXECUTING_SERVICE); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -3878,7 +3890,7 @@ public final class ActiveServices { } } mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_UNBIND_SERVICE); } finally { Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); Loading Loading @@ -3925,7 +3937,8 @@ public final class ActiveServices { } } serviceDoneExecutingLocked(r, inDestroying, false, false); serviceDoneExecutingLocked(r, inDestroying, false, false, OOM_ADJ_REASON_UNBIND_SERVICE); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -4360,11 +4373,11 @@ public final class ActiveServices { /** * Bump the given service record into executing state. * @param oomAdjReason The caller requests it to perform the oomAdjUpdate not {@link * OomAdjuster#OOM_ADJ_REASON_NONE}. * ActivityManagerInternal#OOM_ADJ_REASON_NONE}. * @return {@code true} if it performed oomAdjUpdate. */ private boolean bumpServiceExecutingLocked( ServiceRecord r, boolean fg, String why, @OomAdjuster.OomAdjReason int oomAdjReason) { ServiceRecord r, boolean fg, String why, @OomAdjReason int oomAdjReason) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, ">>> EXECUTING " + why + " of " + r + " in app " + r.app); else if (DEBUG_SERVICE_EXECUTING) Slog.v(TAG_SERVICE_EXECUTING, ">>> EXECUTING " Loading Loading @@ -4416,7 +4429,7 @@ public final class ActiveServices { } } boolean oomAdjusted = false; if (oomAdjReason != OomAdjuster.OOM_ADJ_REASON_NONE && r.app != null if (oomAdjReason != OOM_ADJ_REASON_NONE && r.app != null && r.app.mState.getCurProcState() > ActivityManager.PROCESS_STATE_SERVICE) { // Force an immediate oomAdjUpdate, so the client app could be in the correct process // state before doing any service related transactions Loading @@ -4440,8 +4453,7 @@ public final class ActiveServices { + " rebind=" + rebind); if ((!i.requested || rebind) && i.apps.size() > 0) { try { bumpServiceExecutingLocked(r, execInFg, "bind", OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); bumpServiceExecutingLocked(r, execInFg, "bind", OOM_ADJ_REASON_BIND_SERVICE); if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "requestServiceBinding=" + i.intent.getIntent() + ". bindSeq=" + mBindServiceSeqCounter); Loading @@ -4457,13 +4469,15 @@ public final class ActiveServices { // Keep the executeNesting count accurate. if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Crashed while binding " + r, e); final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_UNBIND_SERVICE); throw e; } catch (RemoteException e) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Crashed while binding " + r); // Keep the executeNesting count accurate. final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_UNBIND_SERVICE); return false; } } Loading Loading @@ -4841,7 +4855,7 @@ public final class ActiveServices { // Ignore, it's been logged and nothing upstack cares. } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } Loading Loading @@ -5193,13 +5207,14 @@ public final class ActiveServices { final ProcessServiceRecord psr = app.mServices; final boolean newService = psr.startService(r); bumpServiceExecutingLocked(r, execInFg, "create", OomAdjuster.OOM_ADJ_REASON_NONE); bumpServiceExecutingLocked(r, execInFg, "create", OOM_ADJ_REASON_NONE /* use "none" to avoid extra oom adj */); mAm.updateLruProcessLocked(app, false, null); updateServiceForegroundLocked(psr, /* oomAdj= */ false); // Force an immediate oomAdjUpdate, so the client app could be in the correct process state // before doing any service related transactions mAm.enqueueOomAdjTargetLocked(app); mAm.updateOomAdjLocked(app, OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjLocked(app, OOM_ADJ_REASON_START_SERVICE); boolean created = false; try { Loading Loading @@ -5233,7 +5248,8 @@ public final class ActiveServices { if (!created) { // Keep the executeNesting count accurate. final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_STOP_SERVICE); // Cleanup. if (newService) { Loading Loading @@ -5319,7 +5335,8 @@ public final class ActiveServices { mAm.grantImplicitAccess(r.userId, si.intent, si.callingId, UserHandle.getAppId(r.appInfo.uid) ); bumpServiceExecutingLocked(r, execInFg, "start", OomAdjuster.OOM_ADJ_REASON_NONE); bumpServiceExecutingLocked(r, execInFg, "start", OOM_ADJ_REASON_NONE /* use "none" to avoid extra oom adj */); if (r.fgRequired && !r.fgWaiting) { if (!r.isForeground) { if (DEBUG_BACKGROUND_CHECK) { Loading @@ -5345,7 +5362,7 @@ public final class ActiveServices { if (!oomAdjusted) { mAm.enqueueOomAdjTargetLocked(r.app); mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } ParceledListSlice<ServiceStartArgs> slice = new ParceledListSlice<>(args); slice.setInlineCountLimit(4); Loading @@ -5371,10 +5388,11 @@ public final class ActiveServices { // Keep nesting count correct final boolean inDestroying = mDestroyingServices.contains(r); for (int i = 0, size = args.size(); i < size; i++) { serviceDoneExecutingLocked(r, inDestroying, inDestroying, true); serviceDoneExecutingLocked(r, inDestroying, inDestroying, true, OOM_ADJ_REASON_STOP_SERVICE); } /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); if (caughtException instanceof TransactionTooLargeException) { throw (TransactionTooLargeException)caughtException; } Loading Loading @@ -5461,7 +5479,7 @@ public final class ActiveServices { if (ibr.hasBound) { try { oomAdjusted |= bumpServiceExecutingLocked(r, false, "bring down unbind", OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); OOM_ADJ_REASON_UNBIND_SERVICE); ibr.hasBound = false; ibr.requested = false; r.app.getThread().scheduleUnbindService(r, Loading Loading @@ -5615,7 +5633,7 @@ public final class ActiveServices { } else { try { oomAdjusted |= bumpServiceExecutingLocked(r, false, "destroy", oomAdjusted ? 0 : OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); oomAdjusted ? 0 : OOM_ADJ_REASON_STOP_SERVICE); mDestroyingServices.add(r); r.destroying = true; r.app.getThread().scheduleStopService(r); Loading @@ -5637,7 +5655,7 @@ public final class ActiveServices { if (!oomAdjusted) { mAm.enqueueOomAdjTargetLocked(r.app); if (!enqueueOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); } } if (r.bindings.size() > 0) { Loading Loading @@ -5762,8 +5780,7 @@ public final class ActiveServices { if (s.app != null && s.app.getThread() != null && b.intent.apps.size() == 0 && b.intent.hasBound) { try { bumpServiceExecutingLocked(s, false, "unbind", OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); bumpServiceExecutingLocked(s, false, "unbind", OOM_ADJ_REASON_UNBIND_SERVICE); if (b.client != s.app && c.notHasFlag(Context.BIND_WAIVE_PRIORITY) && s.app.mState.getSetProcState() <= PROCESS_STATE_HEAVY_WEIGHT) { // If this service's process is not already in the cached list, Loading Loading @@ -5886,7 +5903,8 @@ public final class ActiveServices { } } final long origId = Binder.clearCallingIdentity(); serviceDoneExecutingLocked(r, inDestroying, inDestroying, enqueueOomAdj); serviceDoneExecutingLocked(r, inDestroying, inDestroying, enqueueOomAdj, OOM_ADJ_REASON_EXECUTING_SERVICE); Binder.restoreCallingIdentity(origId); } else { Slog.w(TAG, "Done executing unknown service from pid " Loading @@ -5905,11 +5923,11 @@ public final class ActiveServices { r.tracker.setStarted(false, memFactor, now); } } serviceDoneExecutingLocked(r, true, true, enqueueOomAdj); serviceDoneExecutingLocked(r, true, true, enqueueOomAdj, OOM_ADJ_REASON_PROCESS_END); } private void serviceDoneExecutingLocked(ServiceRecord r, boolean inDestroying, boolean finishing, boolean enqueueOomAdj) { boolean finishing, boolean enqueueOomAdj, @OomAdjReason int oomAdjReason) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "<<< DONE EXECUTING " + r + ": nesting=" + r.executeNesting + ", inDestroying=" + inDestroying + ", app=" + r.app); Loading Loading @@ -5945,7 +5963,7 @@ public final class ActiveServices { if (enqueueOomAdj) { mAm.enqueueOomAdjTargetLocked(r.app); } else { mAm.updateOomAdjLocked(r.app, OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjLocked(r.app, oomAdjReason); } } r.executeFg = false; Loading Loading @@ -6015,7 +6033,7 @@ public final class ActiveServices { bringDownServiceLocked(sr, true); } /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } catch (RemoteException e) { Slog.w(TAG, "Exception in new application when starting service " Loading Loading @@ -6075,7 +6093,7 @@ public final class ActiveServices { } } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_PROCESS_END); } } Loading Loading @@ -6146,7 +6164,7 @@ public final class ActiveServices { bringDownServiceLocked(mTmpCollectionResults.get(i), true); } if (size > 0) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_COMPONENT_DISABLED); } if (fullStop && !mTmpCollectionResults.isEmpty()) { // if we're tearing down the app's entire service state, account for possible Loading Loading @@ -6273,7 +6291,7 @@ public final class ActiveServices { } } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_REMOVE_TASK); } } Loading Loading @@ -6444,7 +6462,7 @@ public final class ActiveServices { } } mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); if (!allowRestart) { psr.stopAllServices(); Loading services/core/java/com/android/server/am/ActivityManagerService.java +35 −31 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/am/BroadcastQueueImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.am; import static android.app.ActivityManager.RESTRICTION_LEVEL_RESTRICTED_BUCKET; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_RECEIVER; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static android.os.Process.ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE; import static android.text.TextUtils.formatSimple; Loading @@ -37,7 +38,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_L import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_BROADCAST; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_MU; import static com.android.server.am.OomAdjuster.OOM_ADJ_REASON_START_RECEIVER; import android.annotation.NonNull; import android.annotation.Nullable; Loading services/core/java/com/android/server/am/BroadcastQueueModernImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.am; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_RECEIVER; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static android.os.Process.ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE; Loading @@ -38,7 +39,6 @@ import static com.android.server.am.BroadcastRecord.getReceiverPackageName; import static com.android.server.am.BroadcastRecord.getReceiverProcessName; import static com.android.server.am.BroadcastRecord.getReceiverUid; import static com.android.server.am.BroadcastRecord.isDeliveryStateTerminal; import static com.android.server.am.OomAdjuster.OOM_ADJ_REASON_START_RECEIVER; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading
core/java/android/app/ActivityManagerInternal.java +164 −1 Original line number Diff line number Diff line Loading @@ -343,7 +343,170 @@ public abstract class ActivityManagerInternal { */ public abstract boolean hasRunningActivity(int uid, @Nullable String packageName); public abstract void updateOomAdj(); /** * Oom Adj Reason: none - internal use only, do not use it. * @hide */ public static final int OOM_ADJ_REASON_NONE = 0; /** * Oom Adj Reason: activity changes. * @hide */ public static final int OOM_ADJ_REASON_ACTIVITY = 1; /** * Oom Adj Reason: finishing a broadcast receiver. * @hide */ public static final int OOM_ADJ_REASON_FINISH_RECEIVER = 2; /** * Oom Adj Reason: starting a broadcast receiver. * @hide */ public static final int OOM_ADJ_REASON_START_RECEIVER = 3; /** * Oom Adj Reason: binding to a service. * @hide */ public static final int OOM_ADJ_REASON_BIND_SERVICE = 4; /** * Oom Adj Reason: unbinding from a service. * @hide */ public static final int OOM_ADJ_REASON_UNBIND_SERVICE = 5; /** * Oom Adj Reason: starting a service. * @hide */ public static final int OOM_ADJ_REASON_START_SERVICE = 6; /** * Oom Adj Reason: connecting to a content provider. * @hide */ public static final int OOM_ADJ_REASON_GET_PROVIDER = 7; /** * Oom Adj Reason: disconnecting from a content provider. * @hide */ public static final int OOM_ADJ_REASON_REMOVE_PROVIDER = 8; /** * Oom Adj Reason: UI visibility changes. * @hide */ public static final int OOM_ADJ_REASON_UI_VISIBILITY = 9; /** * Oom Adj Reason: device power allowlist changes. * @hide */ public static final int OOM_ADJ_REASON_ALLOWLIST = 10; /** * Oom Adj Reason: starting a process. * @hide */ public static final int OOM_ADJ_REASON_PROCESS_BEGIN = 11; /** * Oom Adj Reason: ending a process. * @hide */ public static final int OOM_ADJ_REASON_PROCESS_END = 12; /** * Oom Adj Reason: short FGS timeout. * @hide */ public static final int OOM_ADJ_REASON_SHORT_FGS_TIMEOUT = 13; /** * Oom Adj Reason: system initialization. * @hide */ public static final int OOM_ADJ_REASON_SYSTEM_INIT = 14; /** * Oom Adj Reason: backup/restore. * @hide */ public static final int OOM_ADJ_REASON_BACKUP = 15; /** * Oom Adj Reason: instrumented by the SHELL. * @hide */ public static final int OOM_ADJ_REASON_SHELL = 16; /** * Oom Adj Reason: task stack is being removed. */ public static final int OOM_ADJ_REASON_REMOVE_TASK = 17; /** * Oom Adj Reason: uid idle. */ public static final int OOM_ADJ_REASON_UID_IDLE = 18; /** * Oom Adj Reason: stop service. */ public static final int OOM_ADJ_REASON_STOP_SERVICE = 19; /** * Oom Adj Reason: executing service. */ public static final int OOM_ADJ_REASON_EXECUTING_SERVICE = 20; /** * Oom Adj Reason: background restriction changes. */ public static final int OOM_ADJ_REASON_RESTRICTION_CHANGE = 21; /** * Oom Adj Reason: A package or its component is disabled. */ public static final int OOM_ADJ_REASON_COMPONENT_DISABLED = 22; @IntDef(prefix = {"OOM_ADJ_REASON_"}, value = { OOM_ADJ_REASON_NONE, OOM_ADJ_REASON_ACTIVITY, OOM_ADJ_REASON_FINISH_RECEIVER, OOM_ADJ_REASON_START_RECEIVER, OOM_ADJ_REASON_BIND_SERVICE, OOM_ADJ_REASON_UNBIND_SERVICE, OOM_ADJ_REASON_START_SERVICE, OOM_ADJ_REASON_GET_PROVIDER, OOM_ADJ_REASON_REMOVE_PROVIDER, OOM_ADJ_REASON_UI_VISIBILITY, OOM_ADJ_REASON_ALLOWLIST, OOM_ADJ_REASON_PROCESS_BEGIN, OOM_ADJ_REASON_PROCESS_END, OOM_ADJ_REASON_SHORT_FGS_TIMEOUT, OOM_ADJ_REASON_SYSTEM_INIT, OOM_ADJ_REASON_BACKUP, OOM_ADJ_REASON_SHELL, OOM_ADJ_REASON_REMOVE_TASK, OOM_ADJ_REASON_UID_IDLE, OOM_ADJ_REASON_STOP_SERVICE, OOM_ADJ_REASON_EXECUTING_SERVICE, OOM_ADJ_REASON_RESTRICTION_CHANGE, OOM_ADJ_REASON_COMPONENT_DISABLED, }) @Retention(RetentionPolicy.SOURCE) public @interface OomAdjReason {} /** * Request to update oom adj. */ public abstract void updateOomAdj(@OomAdjReason int oomAdjReason); public abstract void updateCpuStats(); /** Loading
services/core/java/com/android/server/am/ActiveServices.java +58 −40 Original line number Diff line number Diff line Loading @@ -26,6 +26,17 @@ import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_HEAVY_WEIGHT; import static android.app.ActivityManager.PROCESS_STATE_RECEIVER; import static android.app.ActivityManager.PROCESS_STATE_TOP; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_BIND_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_COMPONENT_DISABLED; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_EXECUTING_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_NONE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_PROCESS_END; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_REMOVE_TASK; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_SHORT_FGS_TIMEOUT; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_STOP_SERVICE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_UID_IDLE; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_UNBIND_SERVICE; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_DEPRECATED; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_DISABLED; import static android.app.ForegroundServiceTypePolicy.FGS_TYPE_POLICY_CHECK_OK; Loading Loading @@ -117,6 +128,7 @@ import android.annotation.UptimeMillisLong; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.ActivityManagerInternal.OomAdjReason; import android.app.ActivityManagerInternal.ServiceNotificationPolicy; import android.app.ActivityThread; import android.app.AppGlobals; Loading Loading @@ -1146,7 +1158,7 @@ public final class ActiveServices { } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked( OomAdjuster.OOM_ADJ_REASON_START_SERVICE); OOM_ADJ_REASON_START_SERVICE); } } else { unbindServiceLocked(connection); Loading Loading @@ -1236,8 +1248,7 @@ public final class ActiveServices { /* ignore - local call */ } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked( OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } else { // Starting a service try { Loading Loading @@ -1311,7 +1322,7 @@ public final class ActiveServices { false /* packageFrozen */, true /* enqueueOomAdj */); /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); if (error != null) { return new ComponentName("!!", error); } Loading Loading @@ -1496,7 +1507,7 @@ public final class ActiveServices { stopServiceLocked(service, true); } if (size > 0) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_UID_IDLE); } } } Loading Loading @@ -3296,7 +3307,7 @@ public final class ActiveServices { Slog.e(TAG_SERVICE, "Short FGS procstate demoted: " + sr); mAm.updateOomAdjLocked(sr.app, OomAdjuster.OOM_ADJ_REASON_SHORT_FGS_TIMEOUT); mAm.updateOomAdjLocked(sr.app, OOM_ADJ_REASON_SHORT_FGS_TIMEOUT); } } Loading Loading @@ -3630,7 +3641,7 @@ public final class ActiveServices { needOomAdj = true; if (bringUpServiceLocked(s, service.getFlags(), callerFg, false, permissionsReviewRequired, packageFrozen, true) != null) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_BIND_SERVICE); return 0; } } Loading @@ -3655,7 +3666,7 @@ public final class ActiveServices { mAm.enqueueOomAdjTargetLocked(s.app); } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_BIND_SERVICE); } final int packageState = wasStopped Loading Loading @@ -3787,7 +3798,8 @@ public final class ActiveServices { } } serviceDoneExecutingLocked(r, mDestroyingServices.contains(r), false, false); serviceDoneExecutingLocked(r, mDestroyingServices.contains(r), false, false, OOM_ADJ_REASON_EXECUTING_SERVICE); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -3878,7 +3890,7 @@ public final class ActiveServices { } } mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_UNBIND_SERVICE); } finally { Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); Loading Loading @@ -3925,7 +3937,8 @@ public final class ActiveServices { } } serviceDoneExecutingLocked(r, inDestroying, false, false); serviceDoneExecutingLocked(r, inDestroying, false, false, OOM_ADJ_REASON_UNBIND_SERVICE); } } finally { Binder.restoreCallingIdentity(origId); Loading Loading @@ -4360,11 +4373,11 @@ public final class ActiveServices { /** * Bump the given service record into executing state. * @param oomAdjReason The caller requests it to perform the oomAdjUpdate not {@link * OomAdjuster#OOM_ADJ_REASON_NONE}. * ActivityManagerInternal#OOM_ADJ_REASON_NONE}. * @return {@code true} if it performed oomAdjUpdate. */ private boolean bumpServiceExecutingLocked( ServiceRecord r, boolean fg, String why, @OomAdjuster.OomAdjReason int oomAdjReason) { ServiceRecord r, boolean fg, String why, @OomAdjReason int oomAdjReason) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, ">>> EXECUTING " + why + " of " + r + " in app " + r.app); else if (DEBUG_SERVICE_EXECUTING) Slog.v(TAG_SERVICE_EXECUTING, ">>> EXECUTING " Loading Loading @@ -4416,7 +4429,7 @@ public final class ActiveServices { } } boolean oomAdjusted = false; if (oomAdjReason != OomAdjuster.OOM_ADJ_REASON_NONE && r.app != null if (oomAdjReason != OOM_ADJ_REASON_NONE && r.app != null && r.app.mState.getCurProcState() > ActivityManager.PROCESS_STATE_SERVICE) { // Force an immediate oomAdjUpdate, so the client app could be in the correct process // state before doing any service related transactions Loading @@ -4440,8 +4453,7 @@ public final class ActiveServices { + " rebind=" + rebind); if ((!i.requested || rebind) && i.apps.size() > 0) { try { bumpServiceExecutingLocked(r, execInFg, "bind", OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); bumpServiceExecutingLocked(r, execInFg, "bind", OOM_ADJ_REASON_BIND_SERVICE); if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.instant(Trace.TRACE_TAG_ACTIVITY_MANAGER, "requestServiceBinding=" + i.intent.getIntent() + ". bindSeq=" + mBindServiceSeqCounter); Loading @@ -4457,13 +4469,15 @@ public final class ActiveServices { // Keep the executeNesting count accurate. if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Crashed while binding " + r, e); final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_UNBIND_SERVICE); throw e; } catch (RemoteException e) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Crashed while binding " + r); // Keep the executeNesting count accurate. final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_UNBIND_SERVICE); return false; } } Loading Loading @@ -4841,7 +4855,7 @@ public final class ActiveServices { // Ignore, it's been logged and nothing upstack cares. } finally { /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } Loading Loading @@ -5193,13 +5207,14 @@ public final class ActiveServices { final ProcessServiceRecord psr = app.mServices; final boolean newService = psr.startService(r); bumpServiceExecutingLocked(r, execInFg, "create", OomAdjuster.OOM_ADJ_REASON_NONE); bumpServiceExecutingLocked(r, execInFg, "create", OOM_ADJ_REASON_NONE /* use "none" to avoid extra oom adj */); mAm.updateLruProcessLocked(app, false, null); updateServiceForegroundLocked(psr, /* oomAdj= */ false); // Force an immediate oomAdjUpdate, so the client app could be in the correct process state // before doing any service related transactions mAm.enqueueOomAdjTargetLocked(app); mAm.updateOomAdjLocked(app, OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjLocked(app, OOM_ADJ_REASON_START_SERVICE); boolean created = false; try { Loading Loading @@ -5233,7 +5248,8 @@ public final class ActiveServices { if (!created) { // Keep the executeNesting count accurate. final boolean inDestroying = mDestroyingServices.contains(r); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false); serviceDoneExecutingLocked(r, inDestroying, inDestroying, false, OOM_ADJ_REASON_STOP_SERVICE); // Cleanup. if (newService) { Loading Loading @@ -5319,7 +5335,8 @@ public final class ActiveServices { mAm.grantImplicitAccess(r.userId, si.intent, si.callingId, UserHandle.getAppId(r.appInfo.uid) ); bumpServiceExecutingLocked(r, execInFg, "start", OomAdjuster.OOM_ADJ_REASON_NONE); bumpServiceExecutingLocked(r, execInFg, "start", OOM_ADJ_REASON_NONE /* use "none" to avoid extra oom adj */); if (r.fgRequired && !r.fgWaiting) { if (!r.isForeground) { if (DEBUG_BACKGROUND_CHECK) { Loading @@ -5345,7 +5362,7 @@ public final class ActiveServices { if (!oomAdjusted) { mAm.enqueueOomAdjTargetLocked(r.app); mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } ParceledListSlice<ServiceStartArgs> slice = new ParceledListSlice<>(args); slice.setInlineCountLimit(4); Loading @@ -5371,10 +5388,11 @@ public final class ActiveServices { // Keep nesting count correct final boolean inDestroying = mDestroyingServices.contains(r); for (int i = 0, size = args.size(); i < size; i++) { serviceDoneExecutingLocked(r, inDestroying, inDestroying, true); serviceDoneExecutingLocked(r, inDestroying, inDestroying, true, OOM_ADJ_REASON_STOP_SERVICE); } /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); if (caughtException instanceof TransactionTooLargeException) { throw (TransactionTooLargeException)caughtException; } Loading Loading @@ -5461,7 +5479,7 @@ public final class ActiveServices { if (ibr.hasBound) { try { oomAdjusted |= bumpServiceExecutingLocked(r, false, "bring down unbind", OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); OOM_ADJ_REASON_UNBIND_SERVICE); ibr.hasBound = false; ibr.requested = false; r.app.getThread().scheduleUnbindService(r, Loading Loading @@ -5615,7 +5633,7 @@ public final class ActiveServices { } else { try { oomAdjusted |= bumpServiceExecutingLocked(r, false, "destroy", oomAdjusted ? 0 : OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); oomAdjusted ? 0 : OOM_ADJ_REASON_STOP_SERVICE); mDestroyingServices.add(r); r.destroying = true; r.app.getThread().scheduleStopService(r); Loading @@ -5637,7 +5655,7 @@ public final class ActiveServices { if (!oomAdjusted) { mAm.enqueueOomAdjTargetLocked(r.app); if (!enqueueOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); } } if (r.bindings.size() > 0) { Loading Loading @@ -5762,8 +5780,7 @@ public final class ActiveServices { if (s.app != null && s.app.getThread() != null && b.intent.apps.size() == 0 && b.intent.hasBound) { try { bumpServiceExecutingLocked(s, false, "unbind", OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); bumpServiceExecutingLocked(s, false, "unbind", OOM_ADJ_REASON_UNBIND_SERVICE); if (b.client != s.app && c.notHasFlag(Context.BIND_WAIVE_PRIORITY) && s.app.mState.getSetProcState() <= PROCESS_STATE_HEAVY_WEIGHT) { // If this service's process is not already in the cached list, Loading Loading @@ -5886,7 +5903,8 @@ public final class ActiveServices { } } final long origId = Binder.clearCallingIdentity(); serviceDoneExecutingLocked(r, inDestroying, inDestroying, enqueueOomAdj); serviceDoneExecutingLocked(r, inDestroying, inDestroying, enqueueOomAdj, OOM_ADJ_REASON_EXECUTING_SERVICE); Binder.restoreCallingIdentity(origId); } else { Slog.w(TAG, "Done executing unknown service from pid " Loading @@ -5905,11 +5923,11 @@ public final class ActiveServices { r.tracker.setStarted(false, memFactor, now); } } serviceDoneExecutingLocked(r, true, true, enqueueOomAdj); serviceDoneExecutingLocked(r, true, true, enqueueOomAdj, OOM_ADJ_REASON_PROCESS_END); } private void serviceDoneExecutingLocked(ServiceRecord r, boolean inDestroying, boolean finishing, boolean enqueueOomAdj) { boolean finishing, boolean enqueueOomAdj, @OomAdjReason int oomAdjReason) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "<<< DONE EXECUTING " + r + ": nesting=" + r.executeNesting + ", inDestroying=" + inDestroying + ", app=" + r.app); Loading Loading @@ -5945,7 +5963,7 @@ public final class ActiveServices { if (enqueueOomAdj) { mAm.enqueueOomAdjTargetLocked(r.app); } else { mAm.updateOomAdjLocked(r.app, OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjLocked(r.app, oomAdjReason); } } r.executeFg = false; Loading Loading @@ -6015,7 +6033,7 @@ public final class ActiveServices { bringDownServiceLocked(sr, true); } /* Will be a no-op if nothing pending */ mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_START_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_START_SERVICE); } } catch (RemoteException e) { Slog.w(TAG, "Exception in new application when starting service " Loading Loading @@ -6075,7 +6093,7 @@ public final class ActiveServices { } } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_PROCESS_END); } } Loading Loading @@ -6146,7 +6164,7 @@ public final class ActiveServices { bringDownServiceLocked(mTmpCollectionResults.get(i), true); } if (size > 0) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_COMPONENT_DISABLED); } if (fullStop && !mTmpCollectionResults.isEmpty()) { // if we're tearing down the app's entire service state, account for possible Loading Loading @@ -6273,7 +6291,7 @@ public final class ActiveServices { } } if (needOomAdj) { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_REMOVE_TASK); } } Loading Loading @@ -6444,7 +6462,7 @@ public final class ActiveServices { } } mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_UNBIND_SERVICE); mAm.updateOomAdjPendingTargetsLocked(OOM_ADJ_REASON_STOP_SERVICE); if (!allowRestart) { psr.stopAllServices(); Loading
services/core/java/com/android/server/am/ActivityManagerService.java +35 −31 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/am/BroadcastQueueImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.am; import static android.app.ActivityManager.RESTRICTION_LEVEL_RESTRICTED_BUCKET; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_RECEIVER; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static android.os.Process.ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE; import static android.text.TextUtils.formatSimple; Loading @@ -37,7 +38,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_L import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_BROADCAST; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_MU; import static com.android.server.am.OomAdjuster.OOM_ADJ_REASON_START_RECEIVER; import android.annotation.NonNull; import android.annotation.Nullable; Loading
services/core/java/com/android/server/am/BroadcastQueueModernImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.am; import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_START_RECEIVER; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static android.os.Process.ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE; Loading @@ -38,7 +39,6 @@ import static com.android.server.am.BroadcastRecord.getReceiverPackageName; import static com.android.server.am.BroadcastRecord.getReceiverProcessName; import static com.android.server.am.BroadcastRecord.getReceiverUid; import static com.android.server.am.BroadcastRecord.isDeliveryStateTerminal; import static com.android.server.am.OomAdjuster.OOM_ADJ_REASON_START_RECEIVER; import android.annotation.NonNull; import android.annotation.Nullable; Loading