コードに 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 秒が経過した後にのみプログラムを続行することです。したがって、ユーザーが早期にクリックした場合、経過時間が終了するまで待つ必要があります。