【发布时间】:2020-08-04 08:05:57
【问题描述】:
在我的应用程序中,我想使用CountDownTimer,为此我编写了下面的代码,但我想在某些情况下取消此计时器,然后不运行此计时器!
我在下面编写代码并取消它,但每隔 1 秒再次运行此计时器!
我想在调用 timer.cancel 之后,这个计时器已经取消并且不再运行!
我的代码:
private fun startTimer(timer: Long) {
calTimeChecker = timer
countDownTimer = object : CountDownTimer(Long.MAX_VALUE, 1000) {
@SuppressLint("SetTextI18n")
override fun onTick(millisUntilFinished: Long) {
//Calculate time
calTimeChecker -= 1
var seconds = (calTimeChecker)
val hours = seconds / (60 * 60)
val tempMint = seconds - hours * 60 * 60
val minutes = tempMint / 60
seconds = tempMint - minutes * 60
//This call api with MVP
presenter.getLastInfo(token, auctionId)
override fun onFinish() {
footerCheckingLay.visibility = View.VISIBLE
auctionDetail_footerInfo.visibility = View.INVISIBLE
auctionDetail_footerBottom.enableDisableView(false)
auctionDetail_footerPlusBidBtn.enableDisableView(false)
}
}.start()
override fun loadLastInfoUI(data: BidsRes) {
cancelTimer()
}
调用presenter.getLastInfo(token,auctionId) api时,通过loadLastInfoUI接收这个api数据。
private fun cancelTimer() {
try {
Log.e("BidsLog", "Cancel")
countDownTimer.cancel()
} catch (e: Exception) {
e.printStackTrace()
}
}
我的日志猫:
2020-08-04 12:28:07.646 30602-30602/com.app.android E/BidsLog: Cancel
2020-08-04 12:28:08.642 30602-30602/com.app.android E/BidsLog: Cancel
2020-08-04 12:28:09.641 30602-30602/com.app.android E/BidsLog: Cancel
2020-08-04 12:28:10.643 30602-30602/com.app.android E/BidsLog: Cancel
2020-08-04 12:28:11.655 30602-30602/com.app.android E/BidsLog: Cancel
2020-08-04 12:28:12.645 30602-30602/com.app.android E/BidsLog: Cancel
为什么从cancelTimer 方法调用取消日志后,再次调用此方法而不取消此计时器?
如何取消它并只显示此日志消息一次?
【问题讨论】:
-
我的回答对您有帮助吗?你还在为定时器而烦恼吗?
-
'为什么没有人帮助我?'可能是因为你不回复别人的答案...