首页 > 解决方案 > 如何修复错误处理计时器()在kotlin中运行多次?

问题描述

class HomeActivity : BaseActivity(), View.OnClickListener,
    NavigationView.OnNavigationItemSelectedListener {
   private var mTimer:Timer? = null
   private var mTimerTask: TimerTask? = null

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // todo ..
        syncLocationToServer()
        // todo...
   }

   private fun syncLocationToServer() {       
        mTimer = Timer()
        mTimerTask = object : TimerTask(){
                override fun run() {     
                   Log.d("test", getDateTimeLocal())
                }
        }
      mTimer?.schedule(mTimerTask, 0, 60000L)
    }
}

我想问一下。在上面的代码中,我想每 1 分钟执行一次 Log.d("test", getDateTimeLocal())。

但有时在1分钟发生时,会多次调用Log.d("test", getDateTimeLocal())。我不明白为什么,请帮助我?

标签: javaandroidkotlintimerkotlin-android-extensions

解决方案


试试这个定时器功能:

private fun syncLocationToServer() {       
    Timer().schedule(object : TimerTask() {
        override fun run() {
            TODO("Do something")
        }
    }, 2000)
}

推荐阅读