当我离开页面时计时器不处理
timer doesn't dispose when I leave the page
我每 10 秒在 initState 上调用我的计时器,但当我离开页面时它没有处理。
_timer = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
_timer = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
我试过这两个:
@override
void dispose() {
_timer?.cancel();
_timer.cancel();
super.dispose();
}
方法 dispose 已调用,但仍然每 10 秒调用一次。
您正在实例化 Timer
的两个实例,但只对其中之一调用 cancel
。
_timer = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
// _timer references ^ this object
_timer = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
// _timer now references ^ object
换句话说,在你的第二次实例化之后,你的 _timer
变量只 'remembers' 第二个 Timer
实例。因此,当您调用 cancel()
时,您只会取消第二个 Timer
,而第一个仍然有效。
要解决此问题,请声明两个变量 (_timer1
、_timer2
),然后分别取消它们:
_timer1 = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
_timer2 = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
// ......
@override
void dispose() {
_timer1.cancel();
_timer2.cancel();
super.dispose();
}
我每 10 秒在 initState 上调用我的计时器,但当我离开页面时它没有处理。
_timer = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
_timer = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
我试过这两个:
@override
void dispose() {
_timer?.cancel();
_timer.cancel();
super.dispose();
}
方法 dispose 已调用,但仍然每 10 秒调用一次。
您正在实例化 Timer
的两个实例,但只对其中之一调用 cancel
。
_timer = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
// _timer references ^ this object
_timer = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
// _timer now references ^ object
换句话说,在你的第二次实例化之后,你的 _timer
变量只 'remembers' 第二个 Timer
实例。因此,当您调用 cancel()
时,您只会取消第二个 Timer
,而第一个仍然有效。
要解决此问题,请声明两个变量 (_timer1
、_timer2
),然后分别取消它们:
_timer1 = Timer.periodic(Duration(seconds: 10), (Timer t) => _onRefresh());
_timer2 = Timer.periodic(
Duration(seconds: 10), (Timer t) => _onRefreshIniciados());
// ......
@override
void dispose() {
_timer1.cancel();
_timer2.cancel();
super.dispose();
}