赞
踩
1.Handler类的postDelayed方法:
- final Handler mHandler = new Handler();
- Runnable r = new Runnable() {
-
- @Override
- public void run() {
- //do something
- //每隔1s循环执行run方法
- mHandler.postDelayed(this, 1000);
- }
- };
-
- //主线程中调用:
- mHandler.postDelayed(r, 100);//延时100毫秒
2.用handler+timer+timeTask方法:
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == 1) {
- //do something
- }
- super.handleMessage(msg);
- }
- };
-
- Timer timer = new Timer();
- TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- Message message = new Message();
- message.what = 1;
- handler.sendMessage(message);
- }
- };
-
- //主线程中调用:
- timer.schedule(timerTask, 1000, 500);//延时1s,每隔500毫秒执行一次run方法
3.Thread+handler方法:
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == 1) {
- //do something
- }
- super.handleMessage(msg);
-
- }
- };
-
- class MyThread extends Thread {//这里也可用Runnable接口实现
-
- @Override
- public void run() {
- while (true) {
- try {
- Thread.sleep(1000);//每隔1s执行一次
- Message msg = new Message();
- msg.what = 1;
- handler.sendMessage(msg);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- }
- }
- }
- //主线程中调用:
- new Thread(new MyThread()).start();
1.Handler的postDelayed方法:
- new Handler().postDelayed(new Runnable() {
-
- @Override
- public void run() {
- //do something
- }
- }, 1000); //延时1s执行
2.timer + TimerTask方法:
- Timer timer = new Timer();
- timer.schedule(new TimerTask() {
- @Override
- public void run() {
- //do something
- }
- },1000);//延时1s执行
3.Thread方法:
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- Thread.sleep(1000);//延时1s
- //do something
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }).start();
自带定时器 CountDownTimer
CountDownTimer是一个倒计时的类,还可以指定时间间隔定期通知,举个栗子,比如说你倒计时是100秒的,可以指定每20秒通知一次,这样开始的时候会回调一次,20秒时会回调一次,40秒时会回调一次…,200秒时的回调和时间间隔的回调不同方法的。
常用方法:
- CountDownTimer countDownTimer = new CountDownTimer(totalTime, 2000) {
- @Override
- public void onTick(long millisUntilFinished) {
- updateFileData(fileId); //执行任务
- }
-
- @Override
- public void onFinish() {
- if (User.getInstance().isLoginIng()) {
- if (countDownTimer != null) {
- countDownTimer.start();
- }
- }
- }
- };
- countDownTimer.start();
转载:https://www.jianshu.com/p/29401d15447d
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。