Merge "Shorter thresholds for app standby"
This commit is contained in:
committed by
Android (Google) Code Review
commit
329975f41a
@@ -70,6 +70,10 @@ public class AppStandbyControllerTests {
|
||||
private static final long HOUR_MS = 60 * MINUTE_MS;
|
||||
private static final long DAY_MS = 24 * HOUR_MS;
|
||||
|
||||
private static final long WORKING_SET_THRESHOLD = 12 * HOUR_MS;
|
||||
private static final long FREQUENT_THRESHOLD = 24 * HOUR_MS;
|
||||
private static final long RARE_THRESHOLD = 48 * HOUR_MS;
|
||||
|
||||
private MyInjector mInjector;
|
||||
|
||||
static class MyContextWrapper extends ContextWrapper {
|
||||
@@ -171,6 +175,14 @@ public class AppStandbyControllerTests {
|
||||
return packageName != null && packageName.equals(mBoundWidgetPackage);
|
||||
}
|
||||
|
||||
@Override
|
||||
String getAppIdleSettings() {
|
||||
return "screen_thresholds=0/0/0/" + HOUR_MS + ",elapsed_thresholds=0/"
|
||||
+ WORKING_SET_THRESHOLD + "/"
|
||||
+ FREQUENT_THRESHOLD + "/"
|
||||
+ RARE_THRESHOLD;
|
||||
}
|
||||
|
||||
// Internal methods
|
||||
|
||||
void setDisplayOn(boolean on) {
|
||||
@@ -228,12 +240,12 @@ public class AppStandbyControllerTests {
|
||||
AppStandbyController controller = setupController();
|
||||
|
||||
setChargingState(controller, true);
|
||||
mInjector.mElapsedRealtime = 8 * DAY_MS;
|
||||
mInjector.mElapsedRealtime = RARE_THRESHOLD + 1;
|
||||
assertFalse(controller.isAppIdleFilteredOrParoled(PACKAGE_1, USER_ID,
|
||||
mInjector.mElapsedRealtime, false));
|
||||
|
||||
setChargingState(controller, false);
|
||||
mInjector.mElapsedRealtime = 16 * DAY_MS;
|
||||
mInjector.mElapsedRealtime = 2 * RARE_THRESHOLD + 2;
|
||||
controller.checkIdleStates(USER_ID);
|
||||
assertTrue(controller.isAppIdleFilteredOrParoled(PACKAGE_1, USER_ID,
|
||||
mInjector.mElapsedRealtime, false));
|
||||
@@ -273,26 +285,26 @@ public class AppStandbyControllerTests {
|
||||
reportEvent(controller, USER_INTERACTION, 0);
|
||||
|
||||
// ACTIVE bucket
|
||||
assertTimeout(controller, 11 * HOUR_MS, STANDBY_BUCKET_ACTIVE);
|
||||
assertTimeout(controller, WORKING_SET_THRESHOLD - 1, STANDBY_BUCKET_ACTIVE);
|
||||
|
||||
// WORKING_SET bucket
|
||||
assertTimeout(controller, 25 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
|
||||
assertTimeout(controller, WORKING_SET_THRESHOLD + 1, STANDBY_BUCKET_WORKING_SET);
|
||||
|
||||
// WORKING_SET bucket
|
||||
assertTimeout(controller, 47 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
|
||||
assertTimeout(controller, FREQUENT_THRESHOLD - 1, STANDBY_BUCKET_WORKING_SET);
|
||||
|
||||
// FREQUENT bucket
|
||||
assertTimeout(controller, 4 * DAY_MS, STANDBY_BUCKET_FREQUENT);
|
||||
assertTimeout(controller, FREQUENT_THRESHOLD + 1, STANDBY_BUCKET_FREQUENT);
|
||||
|
||||
// RARE bucket
|
||||
assertTimeout(controller, 9 * DAY_MS, STANDBY_BUCKET_RARE);
|
||||
assertTimeout(controller, RARE_THRESHOLD + 1, STANDBY_BUCKET_RARE);
|
||||
|
||||
reportEvent(controller, USER_INTERACTION, 9 * DAY_MS);
|
||||
reportEvent(controller, USER_INTERACTION, RARE_THRESHOLD + 1);
|
||||
|
||||
assertTimeout(controller, 9 * DAY_MS, STANDBY_BUCKET_ACTIVE);
|
||||
assertTimeout(controller, RARE_THRESHOLD + 1, STANDBY_BUCKET_ACTIVE);
|
||||
|
||||
// RARE bucket
|
||||
assertTimeout(controller, 18 * DAY_MS, STANDBY_BUCKET_RARE);
|
||||
assertTimeout(controller, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -305,18 +317,18 @@ public class AppStandbyControllerTests {
|
||||
reportEvent(controller, USER_INTERACTION, 0);
|
||||
|
||||
// ACTIVE bucket
|
||||
assertTimeout(controller, 11 * HOUR_MS, STANDBY_BUCKET_ACTIVE);
|
||||
assertTimeout(controller, WORKING_SET_THRESHOLD - 1, STANDBY_BUCKET_ACTIVE);
|
||||
|
||||
// WORKING_SET bucket
|
||||
assertTimeout(controller, 25 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
|
||||
assertTimeout(controller, WORKING_SET_THRESHOLD + 1, STANDBY_BUCKET_WORKING_SET);
|
||||
|
||||
// RARE bucket, should fail because the screen wasn't ON.
|
||||
mInjector.mElapsedRealtime = 9 * DAY_MS;
|
||||
mInjector.mElapsedRealtime = RARE_THRESHOLD + 1;
|
||||
controller.checkIdleStates(USER_ID);
|
||||
assertNotEquals(STANDBY_BUCKET_RARE, getStandbyBucket(controller));
|
||||
|
||||
mInjector.setDisplayOn(true);
|
||||
assertTimeout(controller, 18 * DAY_MS, STANDBY_BUCKET_RARE);
|
||||
assertTimeout(controller, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -91,14 +91,14 @@ public class AppStandbyController {
|
||||
0,
|
||||
0,
|
||||
COMPRESS_TIME ? 120 * 1000 : 1 * ONE_HOUR,
|
||||
COMPRESS_TIME ? 240 * 1000 : 8 * ONE_HOUR
|
||||
COMPRESS_TIME ? 240 * 1000 : 2 * ONE_HOUR
|
||||
};
|
||||
|
||||
static final long[] ELAPSED_TIME_THRESHOLDS = {
|
||||
0,
|
||||
COMPRESS_TIME ? 1 * ONE_MINUTE : 12 * ONE_HOUR,
|
||||
COMPRESS_TIME ? 4 * ONE_MINUTE : 2 * ONE_DAY,
|
||||
COMPRESS_TIME ? 16 * ONE_MINUTE : 8 * ONE_DAY
|
||||
COMPRESS_TIME ? 4 * ONE_MINUTE : 24 * ONE_HOUR,
|
||||
COMPRESS_TIME ? 16 * ONE_MINUTE : 48 * ONE_HOUR
|
||||
};
|
||||
|
||||
static final int[] THRESHOLD_BUCKETS = {
|
||||
@@ -1049,6 +1049,11 @@ public class AppStandbyController {
|
||||
int userId) {
|
||||
return appWidgetManager.isBoundWidgetPackage(packageName, userId);
|
||||
}
|
||||
|
||||
String getAppIdleSettings() {
|
||||
return Settings.Global.getString(mContext.getContentResolver(),
|
||||
Settings.Global.APP_IDLE_CONSTANTS);
|
||||
}
|
||||
}
|
||||
|
||||
class AppStandbyHandler extends Handler {
|
||||
@@ -1181,8 +1186,7 @@ public class AppStandbyController {
|
||||
// Look at global settings for this.
|
||||
// TODO: Maybe apply different thresholds for different users.
|
||||
try {
|
||||
mParser.setString(Settings.Global.getString(mContext.getContentResolver(),
|
||||
Settings.Global.APP_IDLE_CONSTANTS));
|
||||
mParser.setString(mInjector.getAppIdleSettings());
|
||||
} catch (IllegalArgumentException e) {
|
||||
Slog.e(TAG, "Bad value for app idle settings: " + e.getMessage());
|
||||
// fallthrough, mParser is empty and all defaults will be returned.
|
||||
|
||||
Reference in New Issue
Block a user