summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-12-10 11:22:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-12-10 11:22:11 +0000
commit348c897729fef9a4c3d2f522efea0c6946071971 (patch)
tree8f6ecedeaaeba7d1a7356c6c51428d410bcd6595
parent71c9bea9a82812048cbc4456086b34628f4856f0 (diff)
parentbc5430850ecd0a0c8ed7f73981f614218b54e6e9 (diff)
Merge "Use simpler delayed writing logic in RoleUserState."
-rw-r--r--services/core/java/com/android/server/role/RoleUserState.java28
1 files changed, 7 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/role/RoleUserState.java b/services/core/java/com/android/server/role/RoleUserState.java
index 81adb1180f1a..ec614a451f54 100644
--- a/services/core/java/com/android/server/role/RoleUserState.java
+++ b/services/core/java/com/android/server/role/RoleUserState.java
@@ -62,7 +62,6 @@ public class RoleUserState {
private static final String ROLES_FILE_NAME = "roles.xml";
private static final long WRITE_DELAY_MILLIS = 200;
- private static final long MAX_WRITE_DELAY_MILLIS = 2000;
private static final String TAG_ROLES = "roles";
private static final String TAG_ROLE = "role";
@@ -92,7 +91,7 @@ public class RoleUserState {
private ArrayMap<String, ArraySet<String>> mRoles = new ArrayMap<>();
@GuardedBy("mLock")
- private long mWritePendingSinceMillis;
+ private boolean mWriteScheduled;
@GuardedBy("mLock")
private boolean mDestroyed;
@@ -292,26 +291,11 @@ public class RoleUserState {
private void scheduleWriteFileLocked() {
throwIfDestroyedLocked();
- long currentTimeMillis = System.currentTimeMillis();
- long writeDelayMillis;
- if (!mWriteHandler.hasMessagesOrCallbacks()) {
- mWritePendingSinceMillis = currentTimeMillis;
- writeDelayMillis = WRITE_DELAY_MILLIS;
- } else {
- mWriteHandler.removeCallbacksAndMessages(null);
- long writePendingDurationMillis = currentTimeMillis - mWritePendingSinceMillis;
- if (writePendingDurationMillis >= MAX_WRITE_DELAY_MILLIS) {
- writeDelayMillis = 0;
- } else {
- long maxWriteDelayMillis = Math.max(MAX_WRITE_DELAY_MILLIS
- - writePendingDurationMillis, 0);
- writeDelayMillis = Math.min(WRITE_DELAY_MILLIS, maxWriteDelayMillis);
- }
+ if (!mWriteScheduled) {
+ mWriteHandler.sendMessageDelayed(PooledLambda.obtainMessage(RoleUserState::writeFile,
+ this), WRITE_DELAY_MILLIS);
+ mWriteScheduled = true;
}
-
- mWriteHandler.sendMessageDelayed(PooledLambda.obtainMessage(RoleUserState::writeFile, this),
- writeDelayMillis);
- Slog.i(LOG_TAG, "Scheduled writing roles.xml");
}
@WorkerThread
@@ -324,6 +308,8 @@ public class RoleUserState {
return;
}
+ mWriteScheduled = false;
+
version = mVersion;
packagesHash = mPackagesHash;
roles = snapshotRolesLocked();