我有一个中断计时器应用程序。它使用计时器类来保持时间,并在休息结束时通过短信通知我。这一切都有效,除非它在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();
}
}
答案 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
此外,您需要终止计时器。