Повторить задачу с задержкой? - PullRequest
195 голосов
/ 05 июня 2011

В моем коде есть переменная, которая говорит, что это «статус».

Я хочу отобразить некоторый текст в приложении в зависимости от значения этой переменной.Это должно быть сделано с определенной временной задержкой.

Это как,

  • Проверить значение переменной состояния

  • Показать некоторыетекст

  • Подождите 10 секунд

  • Проверьте значение переменной состояния

  • Отобразите некоторый текст

  • Подождите 15 секунд

и так далее.Время задержки может варьироваться, и оно устанавливается после отображения текста.

Я попытался Thread.sleep(time delay), и это не удалось.Есть ли лучший способ сделать это?

Ответы [ 11 ]

0 голосов
/ 14 апреля 2019

Для людей, использующих Kotlin, ответ Иназарука не будет работать, в среде IDE потребуется инициализация переменной, поэтому вместо использования postDelayed внутри Runnable мы будем использовать его вотдельный метод.

  • Инициализируйте ваш Runnable следующим образом:

    private var myRunnable = Runnable {
        //Do some work
        //Magic happens here ↓
        runDelayedHandler(1000)   }
    
  • Инициализируйте свой runDelayedHandler метод следующим образом:

     private fun runDelayedHandler(timeToWait : Long) {
        if (!keepRunning) {
            //Stop your handler
            handler.removeCallbacksAndMessages(null)
            //Do something here, this acts like onHandlerStop
        }
        else {
            //Keep it running
            handler.postDelayed(myRunnable, timeToWait)
        }
    }
    
  • Как вы можете видеть, этот подход позволит вам контролировать время выполнения задачи, отслеживать keepRunning и изменять его в течение срока службы приложения.работа для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...