OSDN Git Service

Don't inform usage stats of interaction for a toast
authorAmith Yamasani <yamasani@google.com>
Tue, 20 Sep 2016 23:06:22 +0000 (16:06 -0700)
committerAmith Yamasani <yamasani@google.com>
Wed, 21 Sep 2016 18:53:50 +0000 (18:53 +0000)
If the process is forced to the foreground due to a toast,
don't inform usage stats of an interaction. Otherwise app standby
will be defeated easily.

Bug: 31544592
Test: cts-tradefed run commandAndExit cts -m CtsHostsideNetworkTests -t com.android.cts.net.HostsideRestrictBackgroundNetworkTests#testAppIdle_toast
Change-Id: I100d839ef8cf361704fd5db4b26dcc878672a235

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

index 91f493c..7ca3860 100644 (file)
@@ -20700,8 +20700,10 @@ public final class ActivityManagerService extends ActivityManagerNative
                 isInteraction = nowElapsed > app.fgInteractionTime + SERVICE_USAGE_INTERACTION_TIME;
             }
         } else {
-            isInteraction = app.curProcState
-                    <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND;
+            // If the app was being forced to the foreground, by say a Toast, then
+            // no need to treat it as an interaction
+            isInteraction = app.forcingToForeground == null
+                    && app.curProcState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND;
             app.fgInteractionTime = 0;
         }
         if (isInteraction && (!app.reportedInteraction