OSDN Git Service

Tidy up all service state when done executing
authorChristopher Tate <ctate@google.com>
Wed, 29 May 2019 22:52:47 +0000 (15:52 -0700)
committerChristopher Tate <ctate@google.com>
Wed, 29 May 2019 23:11:03 +0000 (16:11 -0700)
In particular, make sure to note that a no-longer-executing service is
also no longer "foreground" for purposes of procstat sanity-checking.

Fixes: 113926404
Test: manual
Test: atest CtsAppTestCases:.ServiceTest
Change-Id: I11db26820adf9cc8fb97dea8e569915c9bbc93b5

services/core/java/com/android/server/am/ActiveServices.java

index 90266f1..fae853c 100644 (file)
@@ -3250,6 +3250,7 @@ public final class ActiveServices {
             int memFactor = mAm.mProcessStats.getMemFactorLocked();
             long now = SystemClock.uptimeMillis();
             r.tracker.setExecuting(false, memFactor, now);
+            r.tracker.setForeground(false, memFactor, now);
             r.tracker.setBound(false, memFactor, now);
             r.tracker.setStarted(false, memFactor, now);
         }
@@ -3293,8 +3294,10 @@ public final class ActiveServices {
             }
             r.executeFg = false;
             if (r.tracker != null) {
-                r.tracker.setExecuting(false, mAm.mProcessStats.getMemFactorLocked(),
-                        SystemClock.uptimeMillis());
+                final int memFactor = mAm.mProcessStats.getMemFactorLocked();
+                final long now = SystemClock.uptimeMillis();
+                r.tracker.setExecuting(false, memFactor, now);
+                r.tracker.setForeground(false, memFactor, now);
                 if (finishing) {
                     r.tracker.clearCurrentOwner(r, false);
                     r.tracker = null;