Как отложить выполнение андроида - программирование
Подтвердить что ты не робот

Как отложить выполнение андроида

Я создаю настольную игру для Android, в которой есть AI. AI получает очередь и должен вызывать ряд действий, после которых он публикует недействительность для моего настраиваемого представления для обновления.

Мне нужно замедлить эти действия, чтобы пользователь мог видеть, что ИИ имеет свою очередь, а не мигает.

Я пробовал что-то в этом направлении

    try {
        doFirstThing();
        Thread.sleep(500)
        //post invalidate

        doNextThing();
        Thread.sleep(1000)
        //post invalidate
     }
     catch (Exception e) {
     }

Однако это абсолютно не действует. Также это работает в отдельном потоке, если это не было очевидно.

Какой лучший вариант я посмотрел на обработчик, но мне это не нужно, так как мне нужно выполнить серию задач, последовательно обновляя представление каждый раз.

4b9b3361

Ответ 1

Использование обработчика, что является хорошей идеей, если вы выполняете из потока пользовательского интерфейса...

    final Handler h = new Handler();

    final Runnable r2 = new Runnable() {

        @Override
        public void run() {
            // do second thing
        }
    };

    Runnable r1 = new Runnable() {

        @Override
        public void run() {
            // do first thing
            h.postDelayed(r2, 10000); // 10 second delay
        }
    };

    h.postDelayed(r1, 5000); // 5 second delay

Ответ 2

Просто добавьте образец: Следующий код может быть выполнен за пределами потока пользовательского интерфейса. Определенно, Handler должен использовать функцию задержки в Android

Handler handler = new Handler(Looper.getMainLooper());
final Runnable r = new Runnable() {
    public void run() {
        //do your stuff here after DELAY milliseconds
    }
};
handler.postDelayed(r, DELAY);