Есть ли другой способ создать задержку в android, кроме Handler.postDelayed ()? - PullRequest
0 голосов
/ 06 февраля 2020

Handler.PostDelayed () у меня работает противоречиво. Задержки в 1 мс и 10 мс одинаковы, и мне также понадобятся еще меньшие задержки в моем проекте. Есть ли другие функции, которые я могу использовать? Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Для этого вы можете использовать Kotlin сопрограмм.

Выдержка из документации :

import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch { // launch a new coroutine in background and continue
        delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
        println("World!") // print after delay
    }
    println("Hello,") // main thread continues while coroutine is delayed
    Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}

Вы можете циклически выполнять операции и потреблять значительно меньше ресурсов:

fun main() = runBlocking {
    repeat(100_000) { // launch a lot of coroutines
        launch {
            delay(1000L)
            print(".")
        }
    }
}

Может пригодиться следующая статья: Kotlin сопрограммы - Thread.sleep () против задержки

Вы также можете рассмотреть CountDownTimer

0 голосов
/ 06 февраля 2020

Вы можете попробовать это:

    Timer t = new Timer();

    t.scheduleAtFixedRate(
            new TimerTask() {

                @Override
                public void run() {

                        // Your code
                        cancel(); // For exit to loop

                    }

                }

            },
            0,
            100); // Period: time in milliseconds between successive task executions.
...