我的代码中有一个 thread.sleep 和一个处理程序 postDelayed:
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");
}
}
如果用户等待的时间足够长,我可以在我的日志中看到“我跑了”。但是如果用户在延迟结束之前按下按钮,似乎 postDelayed 永远没有机会执行。我的问题是,thread.sleep() 是否与处理程序 postDelayed 混淆?
编辑:这段代码的目的是我想在 DISCONNECT_DELAY 秒已经过去之后继续程序。因此,如果用户点击到早,我必须等待经过的时间才能完成。