В принципе, я пытаюсь сделать что-то более сложное, но это моя проблема:
При использовании handler.postDelayed внутри цикла for задержка возникает только в первый раз, и я жду, когда задержка сработает каждый раз, когда цикл for повторяется:
Например, в этом случае:
for(int z=0; z<4; z++) {
final int finalZ = z;
handler.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(play.this, "z:" + finalZ, Toast.LENGTH_SHORT).show();
}
}, 5000);
}
Я получу:
- Ожидание 5 секунд.
- z:0
- z:1
- z:2
- z:3
Что я хочу получить:
- Ожидание 5 секунд.
- z:0
- Ожидание 5 секунд.
- z:1
- Ожидание 5 секунд.
- z:2
- Ожидание 5 секунд.
- z:3
Мне сказали не использовать Thread.sleep(), потому что это может вызвать различные проблемы (я не совсем их понял, так как я новичок в студии Android). Я использую это в определенной деятельности (не в моей Main_Activity).
Я в основном пытаюсь изменить цвет изображения каждые 0,5 секунды или около того (в этом больше сложностей, но это основная идея). Будет ли Thread.sleep() лучше?
EDIT: Хорошо, благодаря @tynn и @pskink я заставил это работать (см. их ответы). Но теперь вслед за этим возникла другая проблема.
Если, например, после этого я буду запускать точно один и тот же код, они оба будут запускаться одновременно, а не друг за другом, как мне сделать так, чтобы второй "для" запускался только после первое "за" закончилось?
5000
на5000 + z * 1000
например - person pskink   schedule 25.03.2017delayMillis
5000, 6000, 7000 и 8000 в четырех вызовах методаpostDelayed
- вот почему первыйRunnable
запускается через 5 секунд, второй через 6 секунд и так далее - person pskink   schedule 25.03.2017