我有这段代码,我想尝试每小时发送一次电子邮件报告(在这个例子中是每秒一次)。如果没有覆盖范围,请在一小时内再试一次等等。不知何故,我设法在sendUnsendedReports()中打破计时器:它只触发一次。如果我删除了对sendUnsendedReports()的调用,那么定时器运行完美。即使使用try-catch块,计时器也只会触发一次。请指教。Android定时器只会触发一次
private void createAndScheduleSendReport() {
delayedSendTimer = new Timer();
delayedSendTimer.schedule(new TimerTask() {
@Override
public void run() {
Log.w("UrenRegistratie", "Try to send e-mail...");
try{
sendUnsendedReports();
}
catch(Exception e){
// added try catch block to be sure of uninterupted execution
}
Log.w("UrenRegistratie", "Mail scheduler goes to sleep.");
}
}, 0, 1000);
}
找到......所以你这是在做sendunsendedreports()?似乎是那个你应该看的地方。 –
...至少你应该记录你(可能)遇到的任何异常。 –
不应该不可能打破计时器?在sendUnsendedReports()中,我将关闭飞行模式,休眠几秒钟,产生一些xml报告并尝试使用gmail发送它并再次打开飞行模式。 – Harmen