gpt4 book ai didi

timer - 在 Flutter 中,哪些情况下使用 timer.cancel() 而不是 timer = null?

转载 作者:IT王子 更新时间:2023-10-29 06:53:39 30 4
gpt4 key购买 nike

我正在查看 Flutter Timer代码和 cancel() 方法。当我想删除一个计时器时,我可以使用这两行:

timer.cancel();
timer = null;

或者我可以这样做: 定时器=空;

但为什么同时执行 cancel() 和 null?为什么不做一个或另一个?

具体来说,我想问的是在重写状态的 dispose() 时,如果我知道该小部件无论如何都会被处置,我应该同时执行这两项还是只执行一项?

另一种情况:我看到我可以使用 if (timer == null) ...,但如果我只是取消计时器而不将其设置为 null,我同样可以使用if (timer.isActive).

另一种情况:我可以看出,如果有 timer.restart() 方法,那么使用 cancel() 并重用计时器是有意义的。但由于目前没有,所以我总是必须创建一个新计时器。

最佳答案

使用 cancel() 可以停止计时器并阻止调用已注册的回调(或不再为 periodic 计时器调用)。

将保存计时器引用的变量设置为 null 可以是在您自己的逻辑中使用的标志(例如,如果未设置计时器(== null), 设置一个新的
或者它可以只是摆脱对 Timer 实例的任何引用,以便它可以被垃圾收集(就像任何其他对象一样)。

dispose() 中,只需 cancel() 就足够了。

Another case: I see that I can use if (timer == null) ..., but if I were to just cancel the timer and not set it to null, I could equally use if (timer.isActive).

尚未创建的 Timer 与尚未过期且尚未调用传递的回调的 Timer 之间存在细微差别。

关于timer - 在 Flutter 中,哪些情况下使用 timer.cancel() 而不是 timer = null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55153087/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com