summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/power/ThermalManagerService.java21
-rw-r--r--services/tests/servicestests/src/com/android/server/power/ThermalManagerServiceTest.java7
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