我正在尝试使用嵌套的 postDelayed 因为我需要在(延迟)5 分钟后做某事,在(延迟)30 秒后停止它,做其他事情,然后从头开始再次重复循环中的两个事件。我似乎无法做到正确。
我到目前为止的代码:
private long EnabledAfter = 300000; // 5 minutes
private long DisabledAfter = 30000; // 30 seconds
public void start_timers(){
on_delayed(EnabledAfter);
}//end method
private void on_delayed(long period_off){
Delayed = new Runnable() {
public void run() {
something.enable(context);
something.enable_else(context, true);
off_delayed(DisabledAfter); // and disable both again delayed
Handler.postDelayed(Delayed, EnabledAfter);
}
};
Handler.postDelayed(Delayed, EnabledAfter);
}//end method
private void off_delayed(long period_on){
Delayed = new Runnable() {
public void run() {
something.disable(context);
something.disable_else(context, false);
on_delayed(period_on); // start the proces again from the start...
//Handler.postDelayed(Delayed, DisabledAfter);
}
};
Handler.postDelayed(Delayed, period_on);
}//end method
这样做的问题是第一次运行良好,但随后似乎堆叠在彼此之上......并且所有延迟都被破坏了。我需要Runnable
在 5 分 30 秒内执行这两个 s,然后重复该过程。