我有一个每30分钟执行一次函数的线程,所以我使用了一个处理程序和runnable线程的组合(比如postdelayed,removemessages)。那时候我找不到任何方法来阻止线程。我试过手写。 Removemessages()和hander.removeCallbacks(Runnable)但无法帮助..
答案 0 :(得分:3)
我建议您使用TimerTask
代替Thread
。在这里你可以取消&重新启动TimerTask
。
答案 1 :(得分:1)
我建议你使用alarmmanager。 timertask存在问题。 有时,启动时间任务的服务可能会被破坏。如果服务没有运行,timertask也会变为禁用状态。当设备处于空闲状态时,它经常发生。因此,最好的解决方案是使用alarmmanager,无论您的设备是否处于空闲状态,它都会每30分钟触发一次警报。您只需在首次启动应用程序时启动警报,并在重启设备时需要重新启动警报。您可以使用广播接收器在设备重新启动时收到消息。
答案 2 :(得分:0)
要在java中停止线程,您需要调用thread.interrupt();
方法。
答案 3 :(得分:0)
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if(your condition to stop thread)
{
timer.cancel();
}else
{
\\ your code
}
}
}, 0, 1800000);
在里面使用计时器....它将解决你的问题