1

我的程序是适用于 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);
}

请告诉我如何解决。

4

0 回答 0