当前位置: 代码迷 >> Android >> Android java:根据某些条件动态设置延迟并重复执行功能
  详细解决方案

Android java:根据某些条件动态设置延迟并重复执行功能

热度:102   发布时间:2023-08-04 11:53:04.0

我基本上是试图从最初每30秒执行一次的另一个类中获取纬度和经度。当纬度,经度值达到我的目标纬度和经度的速率大约为5秒时,应该更快地进行获取。到目标的距离超出了100 km的范围,则应该以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
}

使用Handler类。 它具有诸如postDelayed(Runnable r, long delayMillis) and postAtTime(Runnable r,long uptimeMillis)之类的实用方法。

执行回调后,请检查距目标纬度和经度有delayMillis并相应地更改delayMillis Handler最接近您获得的绝对可靠性。 如果您需要更可靠的行为,则可以选择使用AlarmManager (但可能会过大)

  相关解决方案