diff options
author | Xiaohui Chen <xiaohuic@google.com> | 2015-06-23 18:23:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-23 18:23:36 +0000 |
commit | a2c159fede892a54b9b98e681c6a3053ab4dbf31 (patch) | |
tree | c90d9d8c6f5e209ac5b28dce7dad0459d660b271 /services/core/java/com/android/server/content | |
parent | a1ee09c8438f45a5933803aacab99c300b343420 (diff) | |
parent | 8dca36dc8a5d17315775ce216689addc5bd9be00 (diff) | |
download | frameworks_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.java | 51 | ||||
-rw-r--r-- | services/core/java/com/android/server/content/SyncManager.java | 5 |
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. |