【发布时间】:2013-09-10 07:30:07
【问题描述】:
我的代码中有一个 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 秒已经过去之后继续程序。所以如果用户点击到早,我必须等待经过的时间才能完成。
【问题讨论】:
-
简单来说,
Thread.sleep会阻止其他进程,而postDelayed不会。
标签: android handler thread-sleep