我想在循环中使用handler.postDelayed而不是Thread.sleep()。基本上我在字符串中有一系列数字,对于每个数字,我需要不同的延迟来执行特定操作。
hThread = new HandlerThread("HandlerThread");
seqRunnable = new Runnable() {
@Override
public void run() {
for (int i = 0; i < seq.length() ; i++) {
if (seq.charAt(i) == '0') {
Log.d(TAG, "seqCode: 0");
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (seq.charAt(i) == '1') {
Log.d(TAG, "seqCode: 1");
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (seq.charAt(i) == '2') {
Log.d(TAG, "seqCode: 2");
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (hThread != null && hThread.isAlive())
seqHandler.postDelayed(seqRunnable, 2400);
Log.d(TAG, "seqCode done!");
}
};
虽然使用Thread.sleep()有效,但我想使用handler.postDelayed()是首选方法,但我使用它时的时间都是错误的。
非常感谢任何帮助。