Вопрос по java, android – Программирование на Java / Android - Loop FAIL

-3

Я использую цикл while с таймером. Дело в том, что таймер не используется в каждом цикле. Используется только в первый раз. После первого раза операторы, включенные в цикл, выполняются без задержки, которую я установил. Как это вообще возможно, поскольку таймер включен в цикл while. Любые решения?

<code>        int count = 1;
        while (count <= 10) {
            final Handler handler = new Handler();
            Timer t = new Timer();
            t.schedule(new TimerTask() {
                public void run() {
                    handler.post(new Runnable() {
                        public void run() {

                        // Stuff the while loop executes
                    }
                    });
                }
            }, 20000);
            count++;
        }
</code>
Er. Вы запускаете десять отдельных таймеров для выполнения задачи. ... Это то, что вы хотели? Zéychin

Ваш Ответ

3   ответа
0

TimerTasks выполнить через час, в то же время. Таким образом, все 10 задач выполняются через 1 час, что выглядит как 1 выполнение, так как всеToast сообщения отображаются одновременно. Чтобы запланировать задачи с фиксированной задержкой, когда первая задача запускается через 1 час, используйте этот метод:

Timer t = new Timer();
t.schedule(task, 3600000, 3600000);

Это будет выполняться, пока вы не позвонитеt.cancel().

Большое спасибо, Джейсон! user1381084
1

TimerTask запускает новый поток, а затем цикл продолжается как обычно.

Выполнение потока не вызывает задержку выполнения кода в вашем цикле.

Я отправляю еще один вопрос, который очень конкретен в отношении того, чего вы пытаетесь достичь, и показывает код, который демонстрирует то, что вы уже пробовали.
Спасибо, я сделаю это. user1381084
Позвольте мне привести вам пример того, что я пытаюсь сделать ... Я просто хочу выпить что-нибудь раз в час. Другими словами & quot; // Заполняем цикл while & quot; я хочу, чтобы то, что там, выполнялось раз в час. user1381084
0

что вы ставите в очередь до 10 тостов, которые нужно выполнить за один час. Каждая итерация вашего цикла занимает всего лишь долю миллисекунды или, может быть, чуть больше. Чтобы правильно поставить их в очередь, вы могли бы делать 3600000 * подсчет вместо 3600000 каждый раз.

Это ужасный способ сделать это все же. Вы должны использовать AlarmManager для подобных вещей.

Спасибо, я попробую. user1381084

Похожие вопросы