summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/content
diff options
context:
space:
mode:
authorXiaohui Chen <xiaohuic@google.com>2015-06-23 18:23:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-23 18:23:36 +0000
commita2c159fede892a54b9b98e681c6a3053ab4dbf31 (patch)
treec90d9d8c6f5e209ac5b28dce7dad0459d660b271 /services/core/java/com/android/server/content
parenta1ee09c8438f45a5933803aacab99c300b343420 (diff)
parent8dca36dc8a5d17315775ce216689addc5bd9be00 (diff)
downloadframeworks_base-a2c159fede892a54b9b98e681c6a3053ab4dbf31.zip
frameworks_base-a2c159fede892a54b9b98e681c6a3053ab4dbf31.tar.gz
frameworks_base-a2c159fede892a54b9b98e681c6a3053ab4dbf31.tar.bz2
Merge "system_server: optimize app idle parole state change" into mnc-dev
Diffstat (limited to 'services/core/java/com/android/server/content')
-rw-r--r--services/core/java/com/android/server/content/AppIdleMonitor.java51
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java5
2 files changed, 18 insertions, 38 deletions
diff --git a/services/core/java/com/android/server/content/AppIdleMonitor.java b/services/core/java/com/android/server/content/AppIdleMonitor.java
index 9598de8..fe5c2da 100644
--- a/services/core/java/com/android/server/content/AppIdleMonitor.java
+++ b/services/core/java/com/android/server/content/AppIdleMonitor.java
@@ -18,11 +18,6 @@ package com.android.server.content;
import android.app.usage.UsageStatsManagerInternal;
import android.app.usage.UsageStatsManagerInternal.AppIdleStateChangeListener;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.BatteryManager;
import android.os.UserHandle;
import com.android.server.LocalServices;
@@ -31,53 +26,32 @@ import com.android.server.LocalServices;
* Helper to listen for app idle and charging status changes and restart backed off
* sync operations.
*/
-class AppIdleMonitor implements AppIdleStateChangeListener {
+class AppIdleMonitor extends AppIdleStateChangeListener {
private final SyncManager mSyncManager;
private final UsageStatsManagerInternal mUsageStats;
- final BatteryManager mBatteryManager;
- /** Is the device currently plugged into power. */
- private boolean mPluggedIn;
+ private boolean mAppIdleParoleOn;
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- onPluggedIn(mBatteryManager.isCharging());
- }
- };
-
- AppIdleMonitor(SyncManager syncManager, Context context) {
+ AppIdleMonitor(SyncManager syncManager) {
mSyncManager = syncManager;
mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
- mUsageStats.addAppIdleStateChangeListener(this);
- mBatteryManager = context.getSystemService(BatteryManager.class);
- mPluggedIn = isPowered();
- registerReceivers(context);
- }
-
- private void registerReceivers(Context context) {
- // Monitor battery charging state
- IntentFilter filter = new IntentFilter(BatteryManager.ACTION_CHARGING);
- filter.addAction(BatteryManager.ACTION_DISCHARGING);
- context.registerReceiver(mReceiver, filter);
- }
+ mAppIdleParoleOn = mUsageStats.isAppIdleParoleOn();
- private boolean isPowered() {
- return mBatteryManager.isCharging();
+ mUsageStats.addAppIdleStateChangeListener(this);
}
- void onPluggedIn(boolean pluggedIn) {
- if (mPluggedIn == pluggedIn) {
+ void setAppIdleParoleOn(boolean appIdleParoleOn) {
+ if (mAppIdleParoleOn == appIdleParoleOn) {
return;
}
- mPluggedIn = pluggedIn;
- if (mPluggedIn) {
+ mAppIdleParoleOn = appIdleParoleOn;
+ if (mAppIdleParoleOn) {
mSyncManager.onAppNotIdle(null, UserHandle.USER_ALL);
}
}
boolean isAppIdle(String packageName, int userId) {
- return !mPluggedIn && mUsageStats.isAppIdle(packageName, userId);
+ return !mAppIdleParoleOn && mUsageStats.isAppIdle(packageName, userId);
}
@Override
@@ -86,4 +60,9 @@ class AppIdleMonitor implements AppIdleStateChangeListener {
if (idle) return;
mSyncManager.onAppNotIdle(packageName, userId);
}
+
+ @Override
+ public void onParoleStateChanged(boolean isParoleOn) {
+ setAppIdleParoleOn(isParoleOn);
+ }
}
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 7415b0e..658f6f8 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -19,6 +19,7 @@ package com.android.server.content;
import android.accounts.Account;
import android.accounts.AccountAndUser;
import android.accounts.AccountManager;
+import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.AppGlobals;
@@ -461,7 +462,7 @@ public class SyncManager {
mSyncAlarmIntent = PendingIntent.getBroadcast(
mContext, 0 /* ignored */, new Intent(ACTION_SYNC_ALARM), 0);
- mAppIdleMonitor = new AppIdleMonitor(this, mContext);
+ mAppIdleMonitor = new AppIdleMonitor(this);
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(mConnectivityIntentReceiver, intentFilter);
@@ -1271,7 +1272,7 @@ public class SyncManager {
* @param userId The user for which the package has become active. Can be USER_ALL if
* the device just plugged in.
*/
- void onAppNotIdle(String packageName, int userId) {
+ void onAppNotIdle(@Nullable String packageName, int userId) {
synchronized (mSyncQueue) {
// For all sync operations in sync queue, if marked as idle, compare with package name
// and unmark. And clear backoff for the operation.