summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Prabir Pradhan <prabirmsp@google.com> 2024-06-28 15:14:21 +0000
committer Prabir Pradhan <prabirmsp@google.com> 2024-06-28 17:28:39 +0000
commitd98cfa8c6f1aac22643d011ddfaadfd0701aee26 (patch)
tree733aa278af61d20f6b9b4a6e31426629960f550f
parent929f8cadf65b29b31933cb9458d0d38a6d6663ec (diff)
BatteryController: Use stable reference for handler callback
Since Java method references are not stable, we cannot use a method reference to remove a callback that was posted before. Bug: 349932775 Change-Id: Iea18f45708360c24715b7d0a8de6a19d9fea3ac3 Test: Presubmit Flag: NONE bug fix
-rw-r--r--services/core/java/com/android/server/input/BatteryController.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/input/BatteryController.java b/services/core/java/com/android/server/input/BatteryController.java
index 38a0d37c5679..62c21bda1fd1 100644
--- a/services/core/java/com/android/server/input/BatteryController.java
+++ b/services/core/java/com/android/server/input/BatteryController.java
@@ -83,6 +83,7 @@ final class BatteryController {
private final Handler mHandler;
private final UEventManager mUEventManager;
private final BluetoothBatteryManager mBluetoothBatteryManager;
+ private final Runnable mHandlePollEventCallback = this::handlePollEvent;
// Maps a pid to the registered listener record for that process. There can only be one battery
// listener per process.
@@ -206,7 +207,7 @@ final class BatteryController {
if (!mIsInteractive || !anyOf(mDeviceMonitors, DeviceMonitor::requiresPolling)) {
// Stop polling.
mIsPolling = false;
- mHandler.removeCallbacks(this::handlePollEvent);
+ mHandler.removeCallbacks(mHandlePollEventCallback);
return;
}
@@ -215,7 +216,7 @@ final class BatteryController {
}
// Start polling.
mIsPolling = true;
- mHandler.postDelayed(this::handlePollEvent, delayStart ? POLLING_PERIOD_MILLIS : 0);
+ mHandler.postDelayed(mHandlePollEventCallback, delayStart ? POLLING_PERIOD_MILLIS : 0);
}
private <R> R processInputDevice(int deviceId, R defaultValue, Function<InputDevice, R> func) {
@@ -366,7 +367,7 @@ final class BatteryController {
}
final long eventTime = SystemClock.uptimeMillis();
mDeviceMonitors.forEach((deviceId, monitor) -> monitor.onPoll(eventTime));
- mHandler.postDelayed(this::handlePollEvent, POLLING_PERIOD_MILLIS);
+ mHandler.postDelayed(mHandlePollEventCallback, POLLING_PERIOD_MILLIS);
}
}