Timers: use fixed delay instead of fixed rate

from lint:
Use of scheduleAtFixedRate is strongly discouraged because it can lead to unexpected behaviour when Android processes become cached (tasks may unexpectedly execute hundreds or thousands of times in quick succession when a process changes from cached to uncached).
This commit is contained in:
Thomas Kuehne
2025-07-06 09:43:30 +02:00
parent 63ee2fcf5c
commit 46d3f461e9
6 changed files with 7 additions and 7 deletions
@@ -323,7 +323,7 @@ public class LiveActivityFragment extends AbstractActivityChartFragment<ChartsDa
private ScheduledExecutorService startActivityPulse(int interval) {
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(new Runnable() {
service.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
FragmentActivity activity = LiveActivityFragment.this.getActivity();
@@ -123,7 +123,7 @@ public class SleepAsAndroidSender {
stopTracking();
accDataScheduler = Executors.newSingleThreadScheduledExecutor();
accDataScheduler.scheduleAtFixedRate(new Runnable() {
accDataScheduler.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
aggregateAndSendAccelData();
@@ -1512,7 +1512,7 @@ public abstract class HuamiSupport extends AbstractBTLESingleDeviceSupport
int loopInterval = getFindDeviceInterval();
LOG.info("Sending find device, interval: " + loopInterval);
findDeviceLoopTimer = new Timer("Huami Find Loop Timer");
findDeviceLoopTimer.scheduleAtFixedRate(new TimerTask() {
findDeviceLoopTimer.schedule(new TimerTask() {
@Override
public void run() {
sendFindDeviceCommand(true);
@@ -1998,7 +1998,7 @@ public abstract class HuamiSupport extends AbstractBTLESingleDeviceSupport
currentButtonTimerActivationTime = currentButtonPressTime;
LOG.info("Activating button timer");
buttonActionTimer = new Timer("Huami Button Action Timer");
buttonActionTimer.scheduleAtFixedRate(new TimerTask() {
buttonActionTimer.schedule(new TimerTask() {
@Override
public void run() {
processButtonAction();
@@ -778,7 +778,7 @@ public class ZeppOsSupport extends AbstractDeviceSupport
private ScheduledExecutorService startRawSensors() {
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(new Runnable() {
service.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
if (rawSensor) {
@@ -42,7 +42,7 @@ public abstract class RealtimeSamplesSupport {
return; // already running
}
realtimeStorageTimer = new Timer("JYou Realtime Storage Timer");
realtimeStorageTimer.scheduleAtFixedRate(new TimerTask() {
realtimeStorageTimer.schedule(new TimerTask() {
@Override
public void run() {
triggerCurrentSample();
@@ -53,7 +53,7 @@ public abstract class RealtimeSamplesSupport {
return; // already running
}
realtimeStorageTimer = new Timer("Mi Band Realtime Storage Timer");
realtimeStorageTimer.scheduleAtFixedRate(new TimerTask() {
realtimeStorageTimer.schedule(new TimerTask() {
@Override
public void run() {
triggerCurrentSample();