if语句在计时器中循环

时间:2012-12-19 20:36:01

标签: java

我有一个中断计时器应用程序。它使用计时器类来保持时间,并在休息结束时通过短信通知我。这一切都有效,除非它在if语句变为true时每秒向我发送一条文本消息。所以我在一分钟内收到了大约60条消息,它会在运行时继续运行。我曾尝试用许多不同的方式重写if语句,它仍然做同样的事情。我知道没有像循环这样的东西,但这就是它正在做的事情。 now变量在公共类中声明的定时器循环之外。我发布了下面的大部分类代码。

     private static long now = System.currentTimeMillis();
       public BreakTimer() {
        this.setText(when());
    }
     public void actionPerformed(ActionEvent ae) {
     (some more code)            
        long currenttime = System.currentTimeMillis() - now;
        int breaknotify = 15 - SettingsIni.breaknotifytime();

                    if ((currenttime) /6000 == breaknotify){                                    
                            try {
                                TextMessage.main(null);
                            } catch (AddressException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (MessagingException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }               
                    }       
        }
public void start() {
        BreakTimer.reset();
        timer.start();     
    }
    public static void main(String[] args) {
        running = true;
        BreakTimer jtl = new BreakTimer();
        jtl.start();
    }
}

2 个答案:

答案 0 :(得分:1)

您需要在发送第一条短信时停止计时器。 Timer类有一个stop()方法。

   if ((currenttime) /6000 == breaknotify){                                    
          try {
              TextMessage.main(null);
              //stop the timer here
           } catch (AddressException e) {

答案 1 :(得分:1)

你正在做整数除法,这将经常返回真实。我建议这样做:

if ( (currenttime)/ 6000.0 == breaknotify

此外,您需要终止计时器。