我想每隔100毫秒进行1000毫秒的操作。
我相信我需要使用
handler
我该怎么做?
答案 0 :(得分:3)
Handler h = new Handler();
int count = 0;
int delay = 100;//milli seconds
long now = 0;
h.postDelayed(new Runnable(){
public void run(){
now = System.currentTimeMillis();
//do something
if(10>count++)
h.postAtTime(this, now + delay);
},
delay};
请注意,您的操作必须少于100毫秒才能执行,否则无法每100毫秒运行一次,所有方法都是这样。
答案 1 :(得分:1)
Timer t = new Timer();
int count = 0;
t.scheduleAtFixedRate(new TimerTask() {
count++;
// Do stuff
if (count >= 10)
t.cancel();
}, 0, 100);
这会调度计时器以执行TimerTask
,延迟为0毫秒。它将每100毫秒执行TimerTask
的主体。使用count
跟踪您在任务中的位置,经过10次迭代后,您可以取消计时器。
正如@ Jug6ernaut所提到的,确保您的任务不会花费很长时间来执行。冗长的任务(在您的情况下花费超过100毫秒的任务)将导致滞后/可能不期望的结果。
答案 2 :(得分:0)
您可以使用Timer
。
答案 3 :(得分:0)
我现在没有时间对此进行测试,但这应该可行
这是一种方式:
创建此计时器:
private Timer mTimer = new Timer();
启动此计时器:
mTimer.scheduleAtFixedRate(new MyTask(), 0, 100L);
计时器类:
/**
* Nested timer to call the task
*/
private class MyTask extends TimerTask {
@Override
public void run() {
try {
counter++;
//call your method that you want to do every 100ms
if (counter == 10) {
counter = 0;
//call method you wanted every 1000ms
}
Thread.sleep(100);
} catch (Throwable t) {
//handle this - maybe by starting it back up again
}
}
}