android中以前是使用time去启动定时器的,但是他有个很严重的bug,也就是当你修改系统时间的时候他的定时会随着改变,故在这里我使用了线程池去处理定时
代码如下:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorTest {
//线程池中能按时间计划来执行任务,允许用户设定计划执行任务的时间,int类型的参数是设定线程池中线程的最小数目。
//当任务较多时,线程池可能会自动创建更多的工作线程来执行任务
public ScheduledExecutorService scheduledExec = Executors.newScheduledThreadPool(1);
//启动定时器
public void lanuchTimer(){
Runnable task = new Runnable() {
@Override
public void run() {
throw new RuntimeException();
}
};
scheduledExec.scheduleWithFixedDelay(task, 5000, 1000*10, TimeUnit.MILLISECONDS);
}
//添加新任务
public void addOneTask(){
Runnable task = new Runnable() {
@Override
public void run() {
//要处理的事情
}
};
scheduledExec.scheduleWithFixedDelay(task, 1000, 1000, TimeUnit.MILLISECONDS);
}
}