我在代码中使用了 thread.sleep 和 handler postDelayed :
在处理程序代码之后,当用户按下按钮后,我有以下内容:
如果用户等待足够长的时间,我就能在日志中看到"I ran"。但是如果用户在延迟时间结束之前按下按钮,似乎postDelayed永远没有机会执行。我的问题是,thread.sleep()是否会影响handler postDelayed?
编辑:这段代码的目的是只有在DISCONNECT_DELAY秒已经过去后,我才想要程序继续运行。因此如果用户点击得太早,我必须等待经过的时间才能完成。
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.e(TAG, "I ran");
mIsDisconnect = false;
}
}, DISCONNECT_DELAY);
在处理程序代码之后,当用户按下按钮后,我有以下内容:
while (mIsDisconnect) {
try {
Thread.sleep(DELAY);
} catch (InterruptedException e) {
Log.e(TAG, "problem sleeping");
}
}
如果用户等待足够长的时间,我就能在日志中看到"I ran"。但是如果用户在延迟时间结束之前按下按钮,似乎postDelayed永远没有机会执行。我的问题是,thread.sleep()是否会影响handler postDelayed?
编辑:这段代码的目的是只有在DISCONNECT_DELAY秒已经过去后,我才想要程序继续运行。因此如果用户点击得太早,我必须等待经过的时间才能完成。
Thread.sleep
会阻塞其他进程,而postDelayed
则不会。 - Saahithyan Vigneswaran