Подождите - Android

63
7

Я хочу, чтобы моя программа ждала 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 секунд?

спросил(а) 2021-01-25T12:19:53+03:00 4 месяца, 4 недели назад
1
Решение
158

Зависит от того, какой поток пытается спать. Вы также можете поместить свой метод в отдельный поток и выполнять свои методы там. Таким образом, ваше приложение не будет висеть/спать


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("");

ответил(а) 2021-01-25T12:19:53+03:00 4 месяца, 4 недели назад
45

Сначала я сломаю точку, чтобы узнать, вызван ли ваш сон даже. Во-вторых, я напечатаю исключение, когда вы поймаете InterruptException. Ваш сон является правильным, поэтому нет причин, по которым он не должен работать, либо кто-то прерывает вас, либо даже не выполняет функцию сна.

ответил(а) 2021-01-25T12:19:53+03:00 4 месяца, 4 недели назад
45

Изменить:


    catch (InterruptedException ex) {
}

в


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

Проверьте logcat, чтобы убедиться, что сон не прерывается.


Кроме того, поставьте некоторые операторы журнала до и после вашего вызова Thread.sleep, распечатав прошедшее время.


Logcat - ваш друг.:)

ответил(а) 2021-01-25T12:19:53+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема