Android创建定时器的常见方式
【摘要】 一、利用Timer + TimerTask
就像它的名字一样,一看就知道可以用来做定时器。直接看代码:
Timer timer = new Timer();timer.schedule(new TimerTask() { @Override public void run() { //todo what you want }}, 0, 1000);
二、利用Handle...
一、利用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();
文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。
原文链接:liuzhen.blog.csdn.net/article/details/89952464
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)