如何在android中停止计时器?
我正在开发一个应用程序,它在特定的时间段内向特定的号码发送消息问题是,它会在这段时间后继续发送该消息。我如何在该特定时间后停止计时器以停止发送该消息?在java.util.timer中,可以使用它停止计时器并清除所有挂起的任务。它说timer()在android上不可用?您可能会发现本文很有用如何在android中停止计时器?,android,timer,Android,Timer,我正在开发一个应用程序,它在特定的时间段内向特定的号码发送消息问题是,它会在这段时间后继续发送该消息。我如何在该特定时间后停止计时器以停止发送该消息?在java.util.timer中,可以使用它停止计时器并清除所有挂起的任务。它说timer()在android上不可用?您可能会发现本文很有用 我错了。计时器()可用。看起来您要么以一次性操作的方式实施它: schedule(TimerTask task, Date when) // Schedule a task for single ex
我错了。计时器()可用。看起来您要么以一次性操作的方式实施它:
schedule(TimerTask task, Date when) // Schedule a task for single execution.
或者在第一次执行后取消:
cancel() // Cancels the Timer and all scheduled tasks.
要提前停止计时器,请执行以下操作:
if(waitTimer != null) {
waitTimer.cancel();
waitTimer = null;
}
和。。我们必须为GC调用“waitTimer.purge()”。如果不再使用计时器,“purge()”!!“purge()”从任务队列中删除所有已取消的任务
if(waitTimer != null) {
waitTimer.cancel();
waitTimer.purge();
waitTimer = null;
}
我有一个类似的问题,这是由放置计时器初始化引起的 它被放置在一个经常被调用的方法中 试试这个:
Timer waitTimer;
void exampleMethod() {
if (waitTimer == null ) {
//initialize your Timer here
...
}
“cancel()”方法仅取消了最新的计时器。较旧的已被忽略,但未停止运行。我们可以安排计时器执行此工作。设置时间结束后,消息将不会发送 这是代码
Timer timer=new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//here you can write the code for send the message
}
}, 10, 60000);
这里我们调用的方法是
公共无效调度固定日期(TimerTask任务、长延迟、长周期)
在这里
任务:要计划的任务
延迟:首次执行前的时间量(毫秒)
期间:后续执行之间的时间量(毫秒)
有关更多信息,您可以参考:
您可以通过调用
timer.cancel();
我有一个类似的问题:每次我按下一个特定的按钮,我就创建一个新的计时器
my_timer = new Timer("MY_TIMER");
my_timer.schedule(new TimerTask() {
...
}
退出该活动时,我删除了计时器:
if(my_timer!=null){
my_timer.cancel();
my_timer = null;
}
但这还不够,因为cancel()
方法只取消了最新的计时器。老一辈被忽视了,他们没有停止跑步。purge()
方法对我没有用处。
我只需检查计时器
实例化即可解决问题:
if(my_timer == null){
my_timer = new Timer("MY_TIMER");
my_timer.schedule(new TimerTask() {
...
}
}
如果你能展示一些使用计时器的代码,我会帮你。我不明白这是一个多么离题的问题!它得到了15张赞成票,8颗星也接受了45张反对票!!没问题,我发誓我在编辑时就这么做了…但是谢谢你的编辑!我曾尝试用这种方法提前停止计时器,但它没有停止。可能会出现什么问题?应该在哪里进行?在onPause()上的onDestroy()中?为什么要将其设置为null?为什么必须将其设置为null?我们应该将其称为:在onPause或onDestroy中?@IgorGanapolsky我认为这取决于具体情况。答案是。。大概当我们不再需要计时器的时候。如果在onPause()中调用上述代码,则应在onResume()中创建计时器。如果在onDestory()中,请在onCreate()中创建计时器。另外,假设我们有两个启动和停止计时器按钮。当用户单击开始按钮时,我们可以创建计时器。然后,当用户单击停止按钮时,我们应该销毁计时器。:)无需调用
Timer.purge()
,因为waitTimer=null
已经为GC标记了整个结构。purge()。但是我喜欢安全地实现一些东西。因为我无法检查代码背后的所有内容。我不是天才:)我看到了关于佩奇的评论();从任务队列中删除所有已取消的任务。如果任务上没有其他引用,则在此调用之后,可以对其进行垃圾收集。为什么将其设为null?还有,清除不起作用?但实际上这不是真的,我调用了.cancel(),计时器没有停止@bebosh它在countDownTimer.called()时工作代码>被称为.timer.cancel(),这不是真的,我调用了cancel,timer没有停止第一个链接返回一个错误404它可能已被删除。在这里阅读:如果所有的C程序员都能在Java编程时开始使用cammelCase,那么生活会变得更加轻松
if(my_timer == null){
my_timer = new Timer("MY_TIMER");
my_timer.schedule(new TimerTask() {
...
}
}