gpt4 book ai didi

java - Android:延迟函数执行和取消其执行的可能性

转载 作者:搜寻专家 更新时间:2023-11-01 08:49:50 25 4
gpt4 key购买 nike

我的应用程序中现在有一个动画加载器。

    public void startLoader() {
Runnable task = new Runnable() {
@Override
public void run() {
lock = true;
loader.setVisibility(View.VISIBLE);
}
};
runOnUiThread(task);
}

public void stopLoader() {
Runnable task = new Runnable() {
@Override
public void run() {
lock = false;
loader.setVisibility(View.GONE);
}
};
runOnUiThread(task);
}

现在我希望它像这样工作:

stopLoader 应该有大约 1000 毫秒的延迟执行,所以它会在调用 stopLoader 后 1 秒消失。但如果在 1000 毫秒内调用了 startLoader,则会取消 stopLoader 计时器。

实现它的最佳方法是什么?

最佳答案

您应该使用 Handler 而不是 runOnUiThread。
使用处理程序,您可以使用 handler.removeCallbacks(runnable) 取消任何延迟的任务。

Handler mHandler = new Handler();
Runnable startTask = new Runnable() {
@Override
public void run() {
lock = true;
loader.setVisibility(View.VISIBLE);
}
};
Runnable stopTask = new Runnable() {
@Override
public void run() {
lock = false;
loader.setVisibility(View.GONE);
}
};
public void startLoader() {
mHandler.removeCallbacks(stopTask);
mHandler.post(startTask);
}

public void stopLoader() {
mHandler.postDelayed(stopTask, 1000);
}

阅读更多 here

关于java - Android:延迟函数执行和取消其执行的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com