我的程序是适用于 android 的 appWdiget。并且有 2 个计时器作为字段。
Timer usualTimer;
Timer unusualTimer;
只有在特殊的时间,我想运行异常定时器,但我不想和普通定时器同时运行它们,所以我有检查空值的代码。
首先,我使用 Broadcast 来运行通常的Timer 来感知 appWidget 是否设置在屏幕上。
这是在我的广播课上。
//run appWidget is set
if(usualTimer == null){
usualTimer = new Timer();
motionTimerTask mtt = new motionTimerTask();
usualTimer.schedule(mtt, 0, 10000);
}
接下来,我得到了不寻常的计时器运行。这也在同一个广播课上。
//run when catch special Broadcast
if(usualTimer != null){
usualTimer.cancel();
usualTimer=null;
}
if(unusualTimer==null){
motionTimerTask mttU = new motionTimerTask();
usualTimer.schedule(mttU, 0, 10000);
}
现在,异常定时器正在运行,通常定时器停止。
我的问题是,在这种情况下,当我重置此 appWidget 时,通常计时器开始运行。我不知道为什么 (usualTimer == null) 是真的,但通常的定时器正在运行。
取消注册接收者这是服务中的代码。这是一个问题吗?
@Override
public void onDestroy(){
unregisterReceiver(receiver);
}
请告诉我如何解决。