如何在时间到期后重新启动倒计时器?

问题描述 投票:0回答:1

Hi folks, I would like to know how to restart a countdown timer after the time is up.e.g. the timer should run down from 48h and restart after. I new to android development and searched a lot through the internet but nothing really helped.thanks for ur help:)my code in activity so far:

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
    }
}
android kotlin timer countdown
1个回答
0
投票

好吧,我不知道这是哪种语言,但我猜测是kotlin,当我学习android时,有一个简单的方法来运行倒计时器,我不认为它是推荐使用线程延迟的倒计时.发现的链接为更简单的倒计时在android。https:/developer.android.comreferencekotlinandroidosCountDownTimer。


0
投票

首先,我不知道你的代码中哪里有倒计时器?如果你想添加倒计时器,你应该把你添加倒计时器的代码贴出来,因为你的问题是关于倒计时器的,假设你已经成功添加了倒计时器,如果你想让它在时间结束后重新启动,你可以在它的onFinish()方法中再次调用它。

如果你想让它在延迟后开始,你可以在onFinish()方法中添加一个像这样的处理程序。

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

关于HAndler或CountdownTimer的更多信息,你可以去查看官方文档,它一定会帮助你的

© www.soinside.com 2019 - 2024. All rights reserved.