-1

ブレークタイマーアプリケーションがあります。タイマークラスを使用して時間を維持し、休憩が終わったときにテキストメッセージで通知します。ifステートメントがtrueになると、毎秒テキストメッセージを送信することを除いて、すべて機能します。だから私は1分間に約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();
    }
}
4

2 に答える 2

1

最初のテキストメッセージが送信されたら、タイマーを停止する必要があります。Timerクラスには、このためのstop()メソッドがあります。

   if ((currenttime) /6000 == breaknotify){                                    
          try {
              TextMessage.main(null);
              //stop the timer here
           } catch (AddressException e) {
于 2012-12-19T20:39:36.223 に答える
1

あなたは整数除算を行っています、これはそうでないよりはるかに頻繁に真を返します。私はこれを行うことをお勧めします:

if ( (currenttime)/ 6000.0 == breaknotify

さらに、タイマーを終了する必要があります。

于 2012-12-19T20:40:46.883 に答える