Android java:Execute 一个根据某些条件动态设置延迟的重复函数

Android java:Execute a function repeatedly with a delay dynamically set based on some conditions

我基本上是在尝试从不同的 class 获取纬度和经度,每 30 秒执行一次 initially.The 当纬度、经度值接近我的目标纬度时,获取应该更快,以 5 秒的速度获取经度,如果到目标的距离超出 100 公里范围,则应该以 5 分钟的速度获取值。 我尝试使用计时器任务,但无法在计时器任务内重新安排时间。

如果不是通过定时任务,有没有其他方法可以达到同样的目的? 我的代码看起来类似于下面提到的

timer = new Timer();
myTimerTask = new MyTimerTask();
timer.schedule(myTimerTask, 0, 30000);//default delay 30 seconds
class MyTimerTask extends TimerTask {
@Override
public void run() {
latitude = gps.getlatitude();
longitude = gps.getlongitude();
int distance =getdistance(latitude,longitude,target_latitude,target_longitude);
if(distance <50)
//execute timer task with 5 second delay
else if (distance >100)
//execute timer task with 5 minutes delay
}

使用Handlerclass。它具有实用方法,例如 postDelayed(Runnable r, long delayMillis) andpostAtTime(Runnable r, long uptimeMillis)`。

执行回调后,检查您与目标纬度和经度的距离,并相应地变化 delayMillisHandler 是您获得的最接近绝对可靠性的值。如果您需要更强大的行为,那么 AlarmManager 是一个选项(但可能有点矫枉过正)