В моем приложении я хочу использовать 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 ,uctionId) api, получите эти данные api с помощью loadLastInfoUI .
private fun cancelTimer() {
try {
Log.e("BidsLog", "Cancel")
countDownTimer.cancel()
} catch (e: Exception) {
e.printStackTrace()
}
}
My logcat:
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
снова вызывать этот метод и не отменять этот таймер?
Как я могу отменить его и только один раз показать это сообщение журнала?