我希望Timer
执行重复。
所以我试试这个来源
public static void init() {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Looper.prepare();
recordWork();
Looper.loop();
}
};
Timer timer = new Timer();
timer.schedule(timerTask, 1000, 30000);
}
单击记录按钮时调用 init()
。
为什么recordWork()
只有一个execute
?
这个timer
不执行重复。
如何解决这个问题?
感谢。
答案 0 :(得分:0)
使用函数timer.scheduleAtFixedRate()
每 X 秒执行一次计时器。
例如timer.scheduleAtFixedRate(timerTask, new Date(), 2000)
现在启动计时器并每2秒执行一次。
答案 1 :(得分:0)
使用如下
public static void init() {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Looper.prepare();
recordWork();
Looper.loop();
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 1000, 30000);
}
使用Timer作为全局变量。并取消它的需要。
if(timer != null) {
timer.cancel();
timer.purge();
timer = null;
}
答案 2 :(得分:0)
如果您仍然无法修复您的Timertask。不妨试试CountDownTimer https://developer.android.com/reference/android/os/CountDownTimer.html
public void startCountDown() {
countDownTimer = new CountDownTimer(totalTimeinMillis,intervalBetweenCountdown) {
@Override
public void onTick(long millisUntilFinished) {
//execute repeating task here
}
@Override
public void onFinish() {
}
};
}
答案 3 :(得分:0)
使用处理程序
Handler handler = new Handler();
int delay = 2000; //milliseconds
handler.postDelayed(new Runnable(){
public void run(){
recordWork();
handler.postDelayed(this, delay);
}
}, delay);