一起Talk Android吧(第二百九十九回:Java中的Timer)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第二百九十九回:Java中的Timer)相关的知识,希望对你有一定的参考价值。
看官们,我们在上一章回中介绍了android中BLE开发的例子,本章回中我们将介绍Java中的Timer,闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我在项目中需要使用Timer,因此对Timer的使用方法做一些介绍。Timer是Java提供的类,经常用来实现某个时间后执行某个任务。它需要配合TimerTask类来完成定时操作。
它的使用步骤如下:
- 1.定义TimerTask的子类并且实现Run方法,该方法中的内容就是具体执行的任务;
- 2.创建Timer和Timer Task子类对象;
- 3.使用Timer的schedule()方法来启动定时器;
- 4.任务完成后使用Timer的cancel()方法取消定时器.
接下来我们重点介绍一下schedule()方法,该方法是重载方法,有1-3个参数,下面是官方文档中的截图:
- 第一个参数是TimerTask类对象用来表示具体执行的任务;
- 第二个参数是任务被延时或者指定的具体时间,用delay表示非常准确;
- 第三个参数是任务被执行的间隔时间,通俗点讲就是每隔一段时间执行一次任务,用period表示非常准确。
- schedule()方法种类比较多,大家可以依据程序的需要使用不同种类的重载方法来实现定时功能。
Timer使用起来比较简单,不过也有一些注意事项:
- 1.定时器使用完后需要取消;
- 2.Timer和TimerTask都可以被取消,但是取消后就能再次使用了,如果想再启动定时器需要new新的Timer和TimerTask对象才可以,不然程序会报异常。
这点我在代码中做了演示,请大家参考下面的代码:
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class TimerEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个时间对象
Calendar calendar = Calendar.getInstance();
// System.out.println(calendar.getTime());
calendar.set(2021,7,8,9,40);
// System.out.println(calendar.getTime());
Timer mTimer = new Timer();
TimerAction mTimerAction = new TimerAction();
//指定时间开始运行任务
// mTimer.schedule(mTimerAction,calendar.getTime());
//延迟100ms运行任务,延迟到时后每隔200ms运行任务
mTimer.schedule(mTimerAction, 100,200);
//让主程序暂停一段时间方便观察Timer运行过程
try {
System.out.println("waiting for 2 minutes");
// Thread.sleep(120000);
Thread.sleep(2000);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
//取消timer。
mTimer.cancel();
mTimer = null;
mTimerAction = null;
System.out.println("cancel timer");
//Timer取消后不能再次运行,需要重新new一个出来
if(mTimer == null) {
mTimer = new Timer();
mTimerAction = new TimerAction();
System.out.println("timer running again");
mTimer.schedule(mTimerAction, 100,200);
}
try {
System.out.println("waiting for 2 minutes");
// Thread.sleep(120000);
Thread.sleep(2000);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
mTimer.cancel();
mTimer = null;
mTimerAction = null;
}
}
class TimerAction extends TimerTask {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Action running");
}
}
代码中有些注释是为了演示不同的Timer功能,大家可以自己动手去修改,然后编译运行程序,我在这里就不运行了。
各位看官,关于Java中Timer的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第二百九十九回:Java中的Timer)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百九十九回:自定义View实例五:简约工具栏)
一起Talk Android吧(第二百九十回:Android中的BLE开发:获取服务一)
一起Talk Android吧(第二百九十七回:Android中的BLE开发:断开设备连接)
一起Talk Android吧(第二百九十八回:Android中的BLE开发:大结局)