Merge "Optimize screen time cross power connection logic from O(N^2) to O(N)" into udc-dev am: c00fb2efbd

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22573802

Change-Id: I4ba487e2cf980336e73ac28c6166625367b9b2c6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
YK Hung
2023-04-12 07:40:37 +00:00
committed by Automerger Merge Worker

View File

@@ -852,9 +852,11 @@ public final class DataProcessor {
final List<AppUsagePeriod> usagePeriodList,
final List<BatteryEvent> batteryEventList) {
final List<AppUsagePeriod> resultList = new ArrayList<>();
int index = 0;
for (AppUsagePeriod inputPeriod : usagePeriodList) {
long lastStartTime = inputPeriod.getStartTime();
for (BatteryEvent batteryEvent : batteryEventList) {
while (index < batteryEventList.size()) {
BatteryEvent batteryEvent = batteryEventList.get(index);
if (batteryEvent.getTimestamp() < inputPeriod.getStartTime()) {
// Because the batteryEventList has been sorted, here is to mark the power
// connection state when the usage period starts. If power is connected when
@@ -865,6 +867,7 @@ public final class DataProcessor {
} else if (batteryEvent.getType() == BatteryEventType.POWER_DISCONNECTED) {
lastStartTime = inputPeriod.getStartTime();
}
index++;
continue;
}
if (batteryEvent.getTimestamp() > inputPeriod.getEndTime()) {
@@ -883,6 +886,7 @@ public final class DataProcessor {
} else if (batteryEvent.getType() == BatteryEventType.POWER_DISCONNECTED) {
lastStartTime = batteryEvent.getTimestamp();
}
index++;
}
if (lastStartTime != 0) {
resultList.add(AppUsagePeriod.newBuilder()