如何在一定时间后停止计时器?
问题描述:
我其中有一个计时器运行任务的Android应用程序:如何在一定时间后停止计时器?
time2.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
sendSamples();
}
}, sampling_interval, sending_interval);
比方说sampling_interval是2000年和sending_interval是4000
因此,在这个应用程序,我送一些阅读值从传感器到服务器。但是我想在10000(10秒)后停止发送。
我该怎么办?
答
尝试
time2.scheduleAtFixedRate(new TimerTask() {
long t0 = System.currentTimeMillis();
@Override
public void run() {
if (System.currentTimeMillis() - t0 > 10 * 1000) {
cancel();
} else {
sendSamples();
}
}
...
+0
需要考虑的一件事是,如果sendSamples()可能比一个调度时间间隔长,并且如果它发生了,那么您希望代码如何工作。如果你不管10次迭代,那么使用一个计数器而不是'currentTimeMillis'。如果你希望在这段时间过去之后不再重新开始,这是一个很好的解决方案。 – ash 2013-08-28 04:15:05
答
检查这个代码:
private final static int DELAY = 10000;
private final Handler handler = new Handler();
private final Timer timer = new Timer();
private final TimerTask task = new TimerTask() {
private int counter = 0;
public void run() {
handler.post(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show();
}
});
if(++counter == 4) {
timer.cancel();
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer.schedule(task, DELAY, DELAY);
}
http://*.com/questions/11489988/how-to-stop-a-timer-after-certain-number-有时候 – gks 2013-04-09 06:41:09