Как перезапустить таймер обратного отсчета по истечении времени? - PullRequest
0 голосов
/ 05 мая 2020

Привет, ребята, я хотел бы знать, как перезапустить таймер обратного отсчета после того, как время истекло. например, таймер должен работать с 48 часов и перезапускаться позже. Я новичок в разработке android и много искал через inte rnet, но ничего не помогло. спасибо за помощь :) мой код в действии:

private val handler = Handler()


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.cash_riddles)

    handler.post(object : Runnable {
        override fun run() {

            handler.postDelayed(this, 1000)
            updateTime()
        }
    })

}

fun updateTime() {

    val currentDate = Calendar.getInstance()


    val eventDate = Calendar.getInstance()
    eventDate[Calendar.YEAR] = 2020
    eventDate[Calendar.MONTH] = 4 // 0-11 so 1 less
    eventDate[Calendar.DAY_OF_MONTH] = 4
    // i want to call the method after timer expired with 
    //eventDate[Calendar.DAY_OF_MONTH]+2 (48h)
    eventDate[Calendar.HOUR] = 2
    eventDate[Calendar.MINUTE] = 5
    eventDate[Calendar.SECOND] = 20
    eventDate.timeZone = TimeZone.getTimeZone("GMT")

    val diff = eventDate.timeInMillis - currentDate.timeInMillis

    val days = diff / (24 * 60 * 60 * 1000)
    val hours = diff / (1000 * 60 * 60) % 24
    val minutes = diff / (1000 * 60) % 60
    val seconds = (diff / 1000) % 60


    verbleibende_zeit.text = "Restliche Zeit:   ${days}d ${hours}h ${minutes}m ${seconds}s"
}

private fun endEvent(currentdate: Calendar, eventdate: Calendar) {
    if (currentdate.time >= eventdate.time) {

      // maybe somebody know what to type here to solve my problem
    }
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

во-первых, я не могу знать, где в вашем коде таймер обратного отсчета ?? Вы должны опубликовать код, в котором вы добавили таймер обратного отсчета, если вы пытались добавить, потому что ваш вопрос касается таймера обратного отсчета. Предполагая, что вы успешно добавили таймер обратного отсчета, и если вы хотите, чтобы он просто перезапустился, когда время истекло, вы можете вызвать его снова из метода onFini sh ().

, если вы хотите, чтобы он запускался после задержки вы можете добавить обработчик в метод onFini sh () следующим образом:

 Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                   // call your timer again here to restart it
                     }
                }, 1000);

Для получения дополнительной информации о HAndler или CountdownTimer вы можете go и проверить официальную документацию, это определенно поможет вам

0 голосов
/ 05 мая 2020

хорошо, я не знаю, что это за язык, но я предполагаю, что это kotlin, когда я изучал android, был простой способ запустить таймер обратного отсчета, и я не думаю, что рекомендуется использовать поток задержка для обратного отсчета. нашел ссылку для более простого обратного отсчета в android. https://developer.android.com/reference/kotlin/android/os/CountDownTimer

...