Android Kotlin Timer()可能是错误的实现
我正在学习Kotlin,同时尝试编写一个简单的应用程序。 实际上,我对Android Kotlin Timer()可能是错误的实现,android,kotlin,Android,Kotlin,我正在学习Kotlin,同时尝试编写一个简单的应用程序。 实际上,我对Timer()有一个问题,因为当我启用switch1时,第二次应用程序崩溃并写入: Timer is already cancelled. 当开关1关闭时,我需要停止计时器,当开关1再次启用时,计时器应从开始开始计数。也许,我必须以另一种方式实现它,但我不知道如何实现它 请帮助我,对不起我的英语 import android.graphics.Color import android.os.Bundle import and
Timer()
有一个问题,因为当我启用switch1
时,第二次应用程序崩溃并写入:
Timer is already cancelled.
当开关1
关闭时,我需要停止计时器,当开关1
再次启用时,计时器应从开始开始计数。也许,我必须以另一种方式实现它,但我不知道如何实现它
请帮助我,对不起我的英语
import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val timer = Timer()
switch1.setOnCheckedChangeListener { switch1, isChecked ->
if (isChecked) {
root_layout.setBackgroundColor(Color.GREEN)
timer.schedule(object : TimerTask() {
override fun run() {
println("dfvffv")
} }, 2000, 2000)
} else {
root_layout.setBackgroundColor(Color.LTGRAY)
timer.cancel()
}
}
}
}
每次用户单击开关时,尝试初始化计时器:
var timer: Timer? = null
switch1.setOnCheckedChangeListener { switch1, isChecked ->
if (isChecked) {
timer = Timer()
root_layout.setBackgroundColor(Color.GREEN)
timer.schedule(object : TimerTask() {
override fun run() {
println("dfvffv")
} }, 2000, 2000)
} else {
root_layout.setBackgroundColor(Color.LTGRAY)
timer?.cancel()
}
}
根据cancel()
方法的描述:
计时器一旦终止,其执行线程即终止
优雅地,并且不能在其上安排更多任务
因此,您需要创建一个新的Timer
实例来安排新任务