使用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()
}
网友评论