diff options
| author | 2024-06-28 15:14:21 +0000 | |
|---|---|---|
| committer | 2024-06-28 17:28:39 +0000 | |
| commit | d98cfa8c6f1aac22643d011ddfaadfd0701aee26 (patch) | |
| tree | 733aa278af61d20f6b9b4a6e31426629960f550f | |
| parent | 929f8cadf65b29b31933cb9458d0d38a6d6663ec (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.java | 7 |
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); } } |