一、利用Timer + TimerTask
就像它的名字一样,一看就知道可以用来做定时器。直接看代码:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//todo what you want
}
}, 0, 1000);
二、利用Handler + Runnable
代码举例:
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
//todo what you want
handler.postDelayed(runnable, 1000);
}
};
这样定义好后,是不会直接运行,需要在合适的地方调用一次如下代码:
handler.postDelayed(runnable, 1000);//触发定时器
三、利用Thread
private class MyThread extends Thread {
public boolean stop = false;
public void run() {
while (!stop) {
//todo what you want
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
};
定好自己的定时线程类,然后启动:
MyThread thread = new MyThread();
thread.start();
四、利用AlarmManager
AlarmManager是系统级闹钟服务,可以直接使用。
//获取闹钟服务
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
//todo what you want in the onCreate() of ClockActivity
Intent intent = new Intent(MainActivity.this, ClockActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
/*
*参数1表示闹钟类型,本例表示在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间;
*参数2表示定时器启动时间,本例是现在就开始;
*参数3表示定时器的触发间隔,本例是1秒钟;
*参数4表示定时器的行为,本例是启动系统服务在活动间跳转;
*/
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, pi);
五、利用CountDownTimer(倒计时器)
就像它的名字一样,是跟咱们一般的定时器反着的。看代码:
//参数1:计时总时间,参数2:每次扣除时间数
CountDownTimer cdt = new CountDownTimer(10000, 1000){
@Override
public void onTick(long millisUntilFinished)
{
//todo what you want
}
@Override
public void onFinish() {
}
};
cdt.start();