diff options
| author | 2018-12-10 11:22:11 +0000 | |
|---|---|---|
| committer | 2018-12-10 11:22:11 +0000 | |
| commit | 348c897729fef9a4c3d2f522efea0c6946071971 (patch) | |
| tree | 8f6ecedeaaeba7d1a7356c6c51428d410bcd6595 | |
| parent | 71c9bea9a82812048cbc4456086b34628f4856f0 (diff) | |
| parent | bc5430850ecd0a0c8ed7f73981f614218b54e6e9 (diff) | |
Merge "Use simpler delayed writing logic in RoleUserState."
| -rw-r--r-- | services/core/java/com/android/server/role/RoleUserState.java | 28 |
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(); |