summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java37
1 files changed, 12 insertions, 25 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 6c8be147528e..af50420208b3 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -106,7 +106,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
-import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@@ -1062,7 +1061,7 @@ public class BatteryStatsImpl extends BatteryStats {
// methods are protected not private to be VisibleForTesting
public static class TimeBase {
- protected final ArrayList<WeakReference<TimeBaseObs>> mObservers = new ArrayList<>();
+ protected final ArrayList<TimeBaseObs> mObservers = new ArrayList<>();
protected long mUptime;
protected long mRealtime;
@@ -1106,24 +1105,17 @@ public class BatteryStatsImpl extends BatteryStats {
}
public void add(TimeBaseObs observer) {
- mObservers.add(new WeakReference<TimeBaseObs>(observer));
+ mObservers.add(observer);
}
public void remove(TimeBaseObs observer) {
- if (!mObservers.removeIf(ref -> ref.get() == observer)) {
- Slog.wtf(TAG, "Removed unknown observer: " + observer);
- }
+ if (!mObservers.remove(observer)) {
+ Slog.wtf(TAG, "Removed unknown observer: " + observer);
+ }
}
public boolean hasObserver(TimeBaseObs observer) {
- Iterator<WeakReference<TimeBaseObs>> i = mObservers.iterator();
- while (i.hasNext()) {
- TimeBaseObs obs = i.next().get();
- if (obs == observer) {
- return true;
- }
- }
- return false;
+ return mObservers.contains(observer);
}
public void init(long uptime, long realtime) {
@@ -1212,11 +1204,9 @@ public class BatteryStatsImpl extends BatteryStats {
mRealtimeStart = realtime;
long batteryUptime = mUnpluggedUptime = getUptime(uptime);
long batteryRealtime = mUnpluggedRealtime = getRealtime(realtime);
- for (WeakReference<TimeBaseObs> ref : mObservers) {
- TimeBaseObs obs = ref.get();
- if (obs != null) {
- obs.onTimeStarted(realtime, batteryUptime, batteryRealtime);
- }
+
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onTimeStarted(realtime, batteryUptime, batteryRealtime);
}
} else {
mPastUptime += uptime - mUptimeStart;
@@ -1224,14 +1214,11 @@ public class BatteryStatsImpl extends BatteryStats {
long batteryUptime = getUptime(uptime);
long batteryRealtime = getRealtime(realtime);
- for (WeakReference<TimeBaseObs> ref : mObservers) {
- TimeBaseObs obs = ref.get();
- if (obs != null) {
- obs.onTimeStopped(realtime, batteryUptime, batteryRealtime);
- }
+
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onTimeStopped(realtime, batteryUptime, batteryRealtime);
}
}
- mObservers.removeIf(ref -> ref.get() == null);
return true;
}
return false;