Loading services/core/java/com/android/server/am/ActiveServices.java +7 −7 Original line number Diff line number Diff line Loading @@ -5067,7 +5067,7 @@ public final class ActiveServices { boolean whileRestarting, boolean permissionsReviewRequired, boolean packageFrozen, boolean enqueueOomAdj) throws TransactionTooLargeException { if (r.app != null && r.app.getThread() != null) { if (r.app != null && r.app.isThreadReady()) { sendServiceArgsLocked(r, execInFg, false); return null; } Loading Loading @@ -5139,7 +5139,7 @@ public final class ActiveServices { final IApplicationThread thread = app.getThread(); final int pid = app.getPid(); final UidRecord uidRecord = app.getUidRecord(); if (thread != null) { if (app.isThreadReady()) { try { if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, Loading Loading @@ -5171,7 +5171,7 @@ public final class ActiveServices { final int pid = app.getPid(); final UidRecord uidRecord = app.getUidRecord(); r.isolationHostProc = app; if (thread != null) { if (app.isThreadReady()) { try { if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, Loading Loading @@ -5571,7 +5571,7 @@ public final class ActiveServices { boolean oomAdjusted = false; // Tell the service that it has been unbound. if (r.app != null && r.app.getThread() != null) { if (r.app != null && r.app.isThreadReady()) { for (int i = r.bindings.size() - 1; i >= 0; i--) { IntentBindRecord ibr = r.bindings.valueAt(i); if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Bringing down binding " + ibr Loading Loading @@ -5713,7 +5713,7 @@ public final class ActiveServices { mAm.mBatteryStatsService.noteServiceStopLaunch(r.appInfo.uid, r.name.getPackageName(), r.name.getClassName()); stopServiceAndUpdateAllowlistManagerLocked(r); if (r.app.getThread() != null) { if (r.app.isThreadReady()) { // Bump the process to the top of LRU list mAm.updateLruProcessLocked(r.app, false, null); updateServiceForegroundLocked(r.app.mServices, false); Loading Loading @@ -5877,7 +5877,7 @@ public final class ActiveServices { if (!c.serviceDead) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Disconnecting binding " + b.intent + ": shouldUnbind=" + b.intent.hasBound); if (s.app != null && s.app.getThread() != null && b.intent.apps.size() == 0 if (s.app != null && s.app.isThreadReady() && b.intent.apps.size() == 0 && b.intent.hasBound) { try { bumpServiceExecutingLocked(s, false, "unbind", OOM_ADJ_REASON_UNBIND_SERVICE); Loading Loading @@ -6379,7 +6379,7 @@ public final class ActiveServices { sr.pendingStarts.add(new ServiceRecord.StartItem(sr, true, sr.getLastStartId(), baseIntent, null, 0, null, null, ActivityManager.PROCESS_STATE_UNKNOWN)); if (sr.app != null && sr.app.getThread() != null) { if (sr.app != null && sr.app.isThreadReady()) { // We always run in the foreground, since this is called as // part of the "remove task" UI operation. try { Loading services/core/java/com/android/server/am/ProcessRecord.java +5 −0 Original line number Diff line number Diff line Loading @@ -769,6 +769,11 @@ class ProcessRecord implements WindowProcessListener { return mPendingFinishAttach; } @GuardedBy("mService") boolean isThreadReady() { return mThread != null && !mPendingFinishAttach; } @GuardedBy("mService") long getStartSeq() { return mStartSeq; Loading Loading
services/core/java/com/android/server/am/ActiveServices.java +7 −7 Original line number Diff line number Diff line Loading @@ -5067,7 +5067,7 @@ public final class ActiveServices { boolean whileRestarting, boolean permissionsReviewRequired, boolean packageFrozen, boolean enqueueOomAdj) throws TransactionTooLargeException { if (r.app != null && r.app.getThread() != null) { if (r.app != null && r.app.isThreadReady()) { sendServiceArgsLocked(r, execInFg, false); return null; } Loading Loading @@ -5139,7 +5139,7 @@ public final class ActiveServices { final IApplicationThread thread = app.getThread(); final int pid = app.getPid(); final UidRecord uidRecord = app.getUidRecord(); if (thread != null) { if (app.isThreadReady()) { try { if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, Loading Loading @@ -5171,7 +5171,7 @@ public final class ActiveServices { final int pid = app.getPid(); final UidRecord uidRecord = app.getUidRecord(); r.isolationHostProc = app; if (thread != null) { if (app.isThreadReady()) { try { if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, Loading Loading @@ -5571,7 +5571,7 @@ public final class ActiveServices { boolean oomAdjusted = false; // Tell the service that it has been unbound. if (r.app != null && r.app.getThread() != null) { if (r.app != null && r.app.isThreadReady()) { for (int i = r.bindings.size() - 1; i >= 0; i--) { IntentBindRecord ibr = r.bindings.valueAt(i); if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Bringing down binding " + ibr Loading Loading @@ -5713,7 +5713,7 @@ public final class ActiveServices { mAm.mBatteryStatsService.noteServiceStopLaunch(r.appInfo.uid, r.name.getPackageName(), r.name.getClassName()); stopServiceAndUpdateAllowlistManagerLocked(r); if (r.app.getThread() != null) { if (r.app.isThreadReady()) { // Bump the process to the top of LRU list mAm.updateLruProcessLocked(r.app, false, null); updateServiceForegroundLocked(r.app.mServices, false); Loading Loading @@ -5877,7 +5877,7 @@ public final class ActiveServices { if (!c.serviceDead) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Disconnecting binding " + b.intent + ": shouldUnbind=" + b.intent.hasBound); if (s.app != null && s.app.getThread() != null && b.intent.apps.size() == 0 if (s.app != null && s.app.isThreadReady() && b.intent.apps.size() == 0 && b.intent.hasBound) { try { bumpServiceExecutingLocked(s, false, "unbind", OOM_ADJ_REASON_UNBIND_SERVICE); Loading Loading @@ -6379,7 +6379,7 @@ public final class ActiveServices { sr.pendingStarts.add(new ServiceRecord.StartItem(sr, true, sr.getLastStartId(), baseIntent, null, 0, null, null, ActivityManager.PROCESS_STATE_UNKNOWN)); if (sr.app != null && sr.app.getThread() != null) { if (sr.app != null && sr.app.isThreadReady()) { // We always run in the foreground, since this is called as // part of the "remove task" UI operation. try { Loading
services/core/java/com/android/server/am/ProcessRecord.java +5 −0 Original line number Diff line number Diff line Loading @@ -769,6 +769,11 @@ class ProcessRecord implements WindowProcessListener { return mPendingFinishAttach; } @GuardedBy("mService") boolean isThreadReady() { return mThread != null && !mPendingFinishAttach; } @GuardedBy("mService") long getStartSeq() { return mStartSeq; Loading