OSDN Git Service

Ignore the active network scorer when checking for idleness
authorWenchao Tong <tongwenchao@google.com>
Wed, 22 Jul 2015 18:15:09 +0000 (11:15 -0700)
committerWenchao Tong <tongwenchao@google.com>
Wed, 22 Jul 2015 23:29:49 +0000 (16:29 -0700)
Bug: 22667334
Change-Id: I97085e653c146eff148458440bbac0a2ac64d6d2

services/usage/java/com/android/server/usage/UsageStatsService.java

index b0a14c8..a433ec4 100644 (file)
@@ -42,6 +42,7 @@ import android.content.pm.UserInfo;
 import android.content.res.Configuration;
 import android.database.ContentObserver;
 import android.hardware.display.DisplayManager;
+import android.net.NetworkScoreManager;
 import android.os.BatteryManager;
 import android.os.BatteryStats;
 import android.os.Binder;
@@ -812,6 +813,10 @@ public class UsageStatsService extends SystemService implements
             return false;
         }
 
+        if (isActiveNetworkScorer(packageName)) {
+            return false;
+        }
+
         if (mAppWidgetManager != null
                 && mAppWidgetManager.isBoundWidgetPackage(packageName, userId)) {
             return false;
@@ -847,6 +852,12 @@ public class UsageStatsService extends SystemService implements
                     == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
     }
 
+    private boolean isActiveNetworkScorer(String packageName) {
+        NetworkScoreManager nsm = (NetworkScoreManager) getContext().getSystemService(
+                Context.NETWORK_SCORE_SERVICE);
+        return packageName != null && packageName.equals(nsm.getActiveScorerPackage());
+    }
+
     void informListeners(String packageName, int userId, boolean isIdle) {
         for (AppIdleStateChangeListener listener : mPackageAccessListeners) {
             listener.onAppIdleStateChanged(packageName, userId, isIdle);