如果
Runnable
已被调度,以下代码会安排 Runnable
立即执行:
public void onSomeEvent() {
if (handler.hasCallbacks(runnable)) {
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, 0); //should be executed immediately
}
}
private final Handler handler = new Handler();
private final Runnable runnable = this::doSomething;
public void onResume() {
handler.postDelayed(runnable, 5000);
}
有没有一种方法
setDelayOfCallback
可以像这样直接改变延迟?
public void onSomeEvent() {
if (handler.hasCallbacks(runnable)) {
handler.setDelayOfCallback(runnable, 0); //should be executed immediately
}
}
以下代码安排一个 Runnable 立即执行(如果该 Runnable 已被调度)
我将其描述为调度
Runnable
以 零添加延迟 运行。 Runnable
运行的时间取决于将控制权返回到框架之前在主应用程序线程中执行的其他操作,以及主应用程序线程的工作队列中的其他操作。
请注意,您可以 使用
post()
代替带有 postDelayed()
参数的 0
。
此代码将立即运行
Runnable
:
public void onSomeEvent() {
if (handler.hasCallbacks(runnable)) {
handler.removeCallbacks(runnable);
runnable.run();
}
}
有没有像这样直接改变延迟的方法setDelayOfCallback?
Handler
上没有这样的方法。