阻止任务在开始之前运行

Prevent a task to run before it started

提问人:alpheonix 提问时间:11/16/2023 更新时间:11/20/2023 访问量:29

问:

您好,我已经创建了一个 TimerTask,该任务设置为在 5 秒后启动,但在我的应用程序中,用户可以执行一些必须阻止此任务运行的操作。如何在计时器结束之前取消任务并防止其发生?

这是我的代码:

val time = Timer("Timer",false)

    Timber.tag("COMPOSABLE23").d(fingerprintFingerCount.name)
    fun test(){
        Timber.tag("COMPOSABLE24").d(fingerprintFingerCount.name)
        if (fingerprintFingerCount.name == FingerprintScanStatus.ScanFew.name){
            Timber.tag("COMPOSABLE2").d("Manger encore")
        }
    }

        if (fingerprintFingerCount.name == FingerprintScanStatus.ScanFew.name){
            Timber.tag("COMPOSABLE2").d("Manger")
            time.schedule(5000){
                test()
            }
        }else if(fingerprintFingerCount.name == FingerprintScanStatus.ScanNotStarted.name){
            time.cancel()
        }
Android Kotlin 计时器 计划任务

评论

0赞 Tenfour04 11/16/2023
如果您不打算使用它,您可以消除您的分支,而不是首先安排计时器。else if
0赞 alpheonix 11/20/2023
目的是为某人将手指放在指纹读取器上时设置计时器,并在他取下指纹读取器时停止计时器。所以我不能只是不安排计时器

答:

0赞 Tenfour04 11/20/2023 #1

将 TimerTask 的属性设置为可为 null 的类型。并且出于稳健性/组织原因,也将计时器放在属性中。var

private val timer = Timer("Timer", false)
private var timerTask: TimerTask? = null

创建 TimerTask 时,请取消之前的任何 TimerTask,以防万一。通过设置属性来创建计时器。然后安排它。这样,您将在属性中保留对它的引用,以便以后在需要时可以取消它。

timerTask?.cancel()
timerTask = object: TimerTask() {
    override fun run() {
        test()
    }
}
timer.schedule(timerTask, delay = 5000L)

当您需要取消它时,您只需要致电 .timerTask?.cancel()