我希望我的程序在我的同时等待10秒,但它不起作用
我尝试使用Thread.sleep(10000);
但不是10s
while (true) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++) {
if (matrixVacancy[i][j] == 1) {
completeParking(i, j, R.color.vaga_ocupada);
} else {
completeParking(i, j, R.color.cor_chao);
}
}
}
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
}
int a, b, c, d, e, f, g, h, i;
a = (int) (Math.random() * 2); // indice i
b = (int) (Math.random() * 5); // indice j
c = (int) (Math.random() * 2); // tem ou nao carro
d = (int) (Math.random() * 2); // indice i
e = (int) (Math.random() * 5); // indice j
f = (int) (Math.random() * 2); // tem ou nao carro
g = (int) (Math.random() * 2); // indice i
h = (int) (Math.random() * 5); // indice j
i = (int) (Math.random() * 2); // tem ou nao carro
matrixVacancy[a][b] = c;
matrixVacancy[d][e] = f;
matrixVacancy[g][h] = i;
}
我该怎么办?我等了10秒?
答案 0 :(得分:12)
取决于您尝试睡觉的线程。您也可以将您的方法放在一个单独的线程中,并在那里执行您的方法。这样你的应用就不会挂起/睡觉了
private class TimeoutOperation extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
try {
Log.i(TAG, "Going to sleep");
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.i(TAG, "This is executed after 10 seconds and runs on the main thread");
//Update your layout here
super.onPostExecute(result);
}
}
要运行此操作,请使用
new TimeoutOperation().execute("");
答案 1 :(得分:0)
首先,我要打破一下,看看你的睡眠是否被召唤。第二,当你捕获InterruptException时我会打印异常。你的睡眠是正确的,所以没有理由它不应该工作,所以有人打扰你或你甚至没有睡觉功能。
答案 2 :(得分:0)
变化:
catch (InterruptedException ex) {
}
为:
catch (InterruptedException ex) {
ex.printStackTrace();
}
检查logcat以确保睡眠不被中断。
另外,在调用Thread.sleep之前和之后放入一些Log语句打印出已用时间。
Logcat是你的朋友。 :)