Android处理延时执行操作的方法
2018-11-12 本文已影响0人
lllllliudahong
在很多情况下我们需要对线程做延时的逻辑处理,下面是我了解的几个常用的方法。列出来做下笔记:
1.使用Handler
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//要执行的操作
}
}, 2000);//2秒后执行Runnable中的run方法
2.使用TimerTask
TimerTask task = new TimerTask() {
@Override
public void run() {
//要执行的操作
}
};
Timer timer = new Timer();
timer.schedule(task, 2000);//2秒后执行TimeTask的run方法
3.使用Thread
new Thread() {
@Override
public void run() {
super.run();
Thread.sleep(2000);//休眠2秒
//要执行的操作
}
}.start();
关于TimerTask的补充使用
1、指定日期运行一次
public static void main(String[] args) throws ParseException {
String sdate = "2018-02-14";
SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");
Date date = sf.parse(sdate);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("系统正在运行……");
}
}, date); //在指定的日期运行一次定时任务
/*如果date日期在今天之前,则启动定时器后,立即运行一次定时任务run方法*/
/*如果date日期在今天之后,则启动定时器后,会在指定的将来日期运行一次任务run方法*/
}
2、在指定的时间后,每隔指定的时间,重复运行定时器任务
public static void main(String[] args) throws ParseException {
String sdate = "2018-02-10";
SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");
Date date = sf.parse(sdate);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("系统正在运行……");
}
}, date, 2000);
/*如果指定的date时间是当天或者今天之前,启动定时器后会立即每隔2s运行一次定时器任务*/
/*如果指定的date时间是未来的某天,启动定时器后会在未来的那天开始,每隔2s执行一次定时器任务*/
}
3、在距当前时刻的一段指定距离后,每隔指定时间运行一次定时器任务
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("系统正在运行……");
}
}, 5000, 2000);
/*当启动定时器后,5s之后开始每隔2s执行一次定时器任务*/
}
停止的方法:
timer.cancel();