gpt4 book ai didi

java - Handler.postDelayed 函数不会造成时间延迟? - 安卓

转载 作者:行者123 更新时间:2023-11-30 03:22:24 24 4
gpt4 key购买 nike

下面我有一个 Runnable“更新程序”...和一个使用 Handler.PostDelayed 函数在延迟后运行 runnable 的 OnClick 函数...

经过一些编辑,这里去掉无用部分的功能是:(passtog = 切换按钮)

 final Runnable updater = new Runnable() {

@Override
public void run() {


if (passTog.isChecked()) {
now = System.currentTimeMillis();
time = now - init;

if (time > 5000) {
Toast.makeText(getApplicationContext(), "WAKE UP !",
Toast.LENGTH_SHORT).show();

}

handler.postDelayed(this, 25);
}
}
};

passTog.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
init = System.currentTimeMillis();
flag = true;

handler.postDelayed(updater,
(new Random().nextInt(4000) + 3000));

}
});
}

解释基本上,用户切换切换按钮。现在开始了:runnable 可以完全运行(一切都在 if block 中)。如果用户没有再次按下按钮并将其关闭该应用程序发送一个 Toast“Wake Up!” ..它每 25 毫秒运行并检查一次以更新时间...

非常简单......但我遇到了问题。

在程序真正进入可运行状态之前,我绝对需要有至少 3 秒的延迟时间 + 一些随机值……所以它在 3 秒到 7 秒之间变化。它应该在 3-7 之间变化,但事实并非如此。

当我运行它时:问题我注意到第一次效果很好……我得到至少 3 秒的延迟 + 随机值 = 完美

第二次,即在开关打开后 ->off-> on :现在它的行为就像没有看到 +3000 ...而只有 ~randInt(4000) 函数...所以它可能会延迟 0 秒或延迟 4 秒...

根据我的所有经验,我从来没有真正遇到过这个问题。我重写了整个代码,我的其他应用程序以完全相同的语法使用此功能并且看起来非常棒。为什么这会创建一个问题 ? Toast 的时间是否可能导致问题..

如何解决?(我对其他方法持开放态度,最好是快速实现。我想要至少 3 秒的延迟,但出于某种原因我没有得到......我需要 UI 响应,但没有线程 hibernate 。)

最佳答案

您可能应该调用 Handler.removeCallbacksAndMessages(null)当开关关闭时。

关于java - Handler.postDelayed 函数不会造成时间延迟? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18902526/

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