ネストされた 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 を実行してから、プロセスを繰り返す必要があります。