Android Handler:如何更改计划的 Runnable 的延迟?

问题描述 投票:0回答:1

如果

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
    }
}
android runnable android-handler postdelayed
1个回答
0
投票

以下代码安排一个 Runnable 立即执行(如果该 Runnable 已被调度)

我将其描述为调度

Runnable
零添加延迟 运行。
Runnable
运行的时间取决于将控制权返回到框架之前在主应用程序线程中执行的其他操作,以及主应用程序线程的工作队列中的其他操作。

请注意,您可以 使用

post()
代替带有
postDelayed()
参数的
0

此代码将立即运行

Runnable

public void onSomeEvent() {
    if (handler.hasCallbacks(runnable)) {
        handler.removeCallbacks(runnable);
        runnable.run();
    }
}

有没有像这样直接改变延迟的方法setDelayOfCallback?

不,抱歉,

Handler
上没有这样的方法。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.