diff options
-rw-r--r-- | services/core/java/com/android/server/power/ThermalManagerService.java | 21 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java | 7 |
2 files changed, 14 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/power/ThermalManagerService.java b/services/core/java/com/android/server/power/ThermalManagerService.java index 53607880ff48..f5882a38b7b9 100644 --- a/services/core/java/com/android/server/power/ThermalManagerService.java +++ b/services/core/java/com/android/server/power/ThermalManagerService.java @@ -74,6 +74,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; @@ -1609,7 +1610,7 @@ public class ThermalManagerService extends SystemService { /** Map of skin temperature sensor name to a corresponding list of samples */ @GuardedBy("mSamples") @VisibleForTesting - final ArrayMap<String, ArrayList<Sample>> mSamples = new ArrayMap<>(); + final ArrayMap<String, LinkedList<Sample>> mSamples = new ArrayMap<>(); /** Map of skin temperature sensor name to the corresponding SEVERE temperature threshold */ @GuardedBy("mSamples") @@ -1706,10 +1707,10 @@ public class ThermalManagerService extends SystemService { continue; } - ArrayList<Sample> samples = mSamples.computeIfAbsent(temperature.getName(), - k -> new ArrayList<>(RING_BUFFER_SIZE)); + LinkedList<Sample> samples = mSamples.computeIfAbsent(temperature.getName(), + k -> new LinkedList<>()); if (samples.size() == RING_BUFFER_SIZE) { - samples.remove(0); + samples.removeFirst(); } samples.add(new Sample(now, temperature.getValue())); } @@ -1724,8 +1725,7 @@ public class ThermalManagerService extends SystemService { float getSlopeOf(List<Sample> samples) { long sumTimes = 0L; float sumTemperatures = 0.0f; - for (int s = 0; s < samples.size(); ++s) { - Sample sample = samples.get(s); + for (final Sample sample : samples) { sumTimes += sample.time; sumTemperatures += sample.temperature; } @@ -1734,8 +1734,7 @@ public class ThermalManagerService extends SystemService { long sampleVariance = 0L; float sampleCovariance = 0.0f; - for (int s = 0; s < samples.size(); ++s) { - Sample sample = samples.get(s); + for (final Sample sample : samples) { long timeDelta = sample.time - meanTime; float temperatureDelta = sample.temperature - meanTemperature; sampleVariance += timeDelta * timeDelta; @@ -1795,9 +1794,9 @@ public class ThermalManagerService extends SystemService { float maxNormalized = Float.NaN; int noThresholdSampleCount = 0; - for (Map.Entry<String, ArrayList<Sample>> entry : mSamples.entrySet()) { + for (Map.Entry<String, LinkedList<Sample>> entry : mSamples.entrySet()) { String name = entry.getKey(); - ArrayList<Sample> samples = entry.getValue(); + LinkedList<Sample> samples = entry.getValue(); Float threshold = mSevereThresholds.get(name); if (threshold == null) { @@ -1806,7 +1805,7 @@ public class ThermalManagerService extends SystemService { continue; } - float currentTemperature = samples.get(0).temperature; + float currentTemperature = samples.getLast().temperature; if (samples.size() < MINIMUM_SAMPLE_COUNT) { // Don't try to forecast, just use the latest one we have diff --git a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java index 32bbc7a618d1..3685afd50ccd 100644 --- a/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java @@ -68,6 +68,7 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -513,7 +514,7 @@ public class ThermalManagerServiceTest { @Test public void testTemperatureWatcherGetSlopeOf() throws RemoteException { TemperatureWatcher watcher = mService.mTemperatureWatcher; - List<TemperatureWatcher.Sample> samples = new ArrayList<>(); + List<TemperatureWatcher.Sample> samples = new LinkedList<>(); for (int i = 0; i < 30; ++i) { samples.add(watcher.createSampleForTesting(i, (float) (i / 2 * 2))); } @@ -538,7 +539,7 @@ public class ThermalManagerServiceTest { public void testTemperatureWatcherGetForecast() throws RemoteException { TemperatureWatcher watcher = mService.mTemperatureWatcher; - ArrayList<TemperatureWatcher.Sample> samples = new ArrayList<>(); + LinkedList<TemperatureWatcher.Sample> samples = new LinkedList<>(); // Add a single sample samples.add(watcher.createSampleForTesting(0, 25.0f)); @@ -551,7 +552,7 @@ public class ThermalManagerServiceTest { // Add some time-series data for (int i = 1; i < 20; ++i) { - samples.add(0, watcher.createSampleForTesting(1000 * i, 25.0f + 0.5f * i)); + samples.add(watcher.createSampleForTesting(1000 * i, 25.0f + 0.5f * i)); } // Now the forecast should vary depending on how far ahead we are trying to predict |