Java Handler.postDelayed函数不使用';不要造成时间延迟安卓
下面我有一个可运行的“更新程序”…和一个OnClick函数,它使用Handler.PostDelayed函数在延迟后运行可运行的 稍加编辑后,切割无用的零件,以下是功能: (passtog=切换按钮) 解释 基本上,用户切换切换按钮。现在它打开了:runnable可以完全运行(一切都在if块中)。 如果用户没有再次按下按钮并将其关闭,应用程序将发送一个祝酒词“唤醒!”…它每25毫秒运行并检查一次以更新时间 非常简单。。。但我有个问题 在程序真正进入可运行状态之前,我绝对需要有3秒的最小时间延迟+一些随机值。。。所以它在3秒到7秒之间变化。它应该在3-7之间变化,但不是 当我运行它时:问题 我注意到第一次,它工作得很好。。。我得到至少3秒的延迟+一个随机值=完美 第二次,即在开关打开->关闭->打开之后:现在它的行为就像没有看到+3000…和~randInt(4000)函数一样。。。所以它可能会有0秒或4秒的延迟 以我所有的经验,我从来没有真正遇到过这件事。。我已经重写了整个代码,我的其他应用程序在完全相同的sytax中使用了这个函数,并且看起来做得非常好。。为什么会产生问题?敬酒的时间可能会引起问题吗 如何解决这个问题? (我对其他方法持开放态度,最好是快速实现。我希望至少有3秒的延迟,但由于某些原因我没有得到延迟…我需要UI响应,尽管没有线程休眠。)您可能应该在开关关闭时调用。您可能应该在开关关闭时调用Java Handler.postDelayed函数不使用';不要造成时间延迟安卓,java,android,random,time,Java,Android,Random,Time,下面我有一个可运行的“更新程序”…和一个OnClick函数,它使用Handler.PostDelayed函数在延迟后运行可运行的 稍加编辑后,切割无用的零件,以下是功能: (passtog=切换按钮) 解释 基本上,用户切换切换按钮。现在它打开了:runnable可以完全运行(一切都在if块中)。 如果用户没有再次按下按钮并将其关闭,应用程序将发送一个祝酒词“唤醒!”…它每25毫秒运行并检查一次以更新时间 非常简单。。。但我有个问题 在程序真正进入可运行状态之前,我绝对需要有3秒的最小时间延迟+
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));
}
});
}