美文网首页
android倒计时使用rxJava实现

android倒计时使用rxJava实现

作者: 余炳高笔记 | 来源:发表于2023-02-08 11:00 被阅读0次

    使用rxJava实现倒计时60秒

    private var disposable: Disposable? =null

    /**

    *  重新倒计时只需要缓存结束时间 然后调用

    *  AppTools.setCache("smsEndTime", "${System.currentTimeMillis() + 60000}")

    */

    private fun endTime() {

    // 剩余倒计时毫秒值

        val endTime = ("0${AppTools.getCache("smsEndTime")}".toLong() - System.currentTimeMillis())

    when {

    // 大于0说明距离上次倒计时60s还未倒计时完

            endTime >0 -> {

    val count = endTime /1000

                root.code.isEnabled =false

                disposable?.dispose()

    disposable = Flowable

    // 从0开始 // 到60结束 // 延时0s // 间隔1s

                    .intervalRange(0, count, 0, 1, TimeUnit.SECONDS)

    .subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .doOnNext{ s: Long->

                        root.code.text ="${count - s}s"

                    }

                    .doOnComplete{

                        root.code.isEnabled =true

                        root.code.text ="获取验证码"

                    }.subscribe()

    }

    }

    }

    override fun onDestroy() {

    super.onDestroy()

    // 销毁倒计时

        disposable?.dispose()

    }

    相关文章

      网友评论

          本文标题:android倒计时使用rxJava实现

          本文链接:https://www.haomeiwen.com/subject/pyrqkdtx.html