Wait a time - Android

会有一股神秘感。 提交于 2019-11-27 08:16:06

问题


I want that my program wait 10s in my while true, but it doesn't work I tried to use Thread.sleep(10000); but it isn't 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;
}

How can I do it? For my while wait 10s?


回答1:


Depends what thread your trying to sleep. You can also put your method in a seperate thread and do your methods there. This way your app will not hang/sleep

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);
    }
}

To run this operation use

new TimeoutOperation().execute("");



回答2:


First I'd break point to see if your sleep is even called. Second I'd print the exception when your catching the InterruptException. Your sleep is correct so there's no reason it shouldn't be working so either someone is interrupting you or your not even getting to the sleep function.




回答3:


Change:

    catch (InterruptedException ex) {
    }

to:

    catch (InterruptedException ex) {
        ex.printStackTrace();
    }

Check logcat to make sure that the sleep isn't being interrupted.

Also, put some Log statements in before and after your call to Thread.sleep printing out the elapsed time.

Logcat is your friend. :)



来源:https://stackoverflow.com/questions/13765034/wait-a-time-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!