等一下 - Android

时间:2012-12-07 14:27:11

标签: android wait

我希望我的程序在我的同时等待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秒?

3 个答案:

答案 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是你的朋友。 :)