当前位置:   article > 正文

Android中几种常用的定时器_mhandler.postdelayed(this, 1000);

mhandler.postdelayed(this, 1000);

一、三种常用的定时器

1.Handler类的postDelayed方法:

  1. final Handler mHandler = new Handler();
  2. Runnable r = new Runnable() {
  3. @Override
  4. public void run() {
  5. //do something
  6. //每隔1s循环执行run方法
  7. mHandler.postDelayed(this, 1000);
  8. }
  9. };
  10. //主线程中调用:
  11. mHandler.postDelayed(r, 100);//延时100毫秒

2.用handler+timer+timeTask方法:

 

  1. final Handler handler = new Handler() {
  2. @Override
  3. public void handleMessage(Message msg) {
  4. if (msg.what == 1) {
  5. //do something
  6. }
  7. super.handleMessage(msg);
  8. }
  9. };
  10. Timer timer = new Timer();
  11. TimerTask timerTask = new TimerTask() {
  12. @Override
  13. public void run() {
  14. Message message = new Message();
  15. message.what = 1;
  16. handler.sendMessage(message);
  17. }
  18. };
  19. //主线程中调用:
  20. timer.schedule(timerTask, 1000, 500);//延时1s,每隔500毫秒执行一次run方法

3.Thread+handler方法:

 

  1. final Handler handler = new Handler() {
  2. @Override
  3. public void handleMessage(Message msg) {
  4. if (msg.what == 1) {
  5. //do something
  6. }
  7. super.handleMessage(msg);
  8. }
  9. };
  10. class MyThread extends Thread {//这里也可用Runnable接口实现
  11. @Override
  12. public void run() {
  13. while (true) {
  14. try {
  15. Thread.sleep(1000);//每隔1s执行一次
  16. Message msg = new Message();
  17. msg.what = 1;
  18. handler.sendMessage(msg);
  19. } catch (InterruptedException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }
  24. }
  25. //主线程中调用:
  26. new Thread(new MyThread()).start();

二、三种延时的快捷方法:

1.Handler的postDelayed方法:

 

  1. new Handler().postDelayed(new Runnable() {
  2. @Override
  3. public void run() {
  4. //do something
  5. }
  6. }, 1000); //延时1s执行

2.timer + TimerTask方法:

 

  1. Timer timer = new Timer();
  2. timer.schedule(new TimerTask() {
  3. @Override
  4. public void run() {
  5. //do something
  6. }
  7. },1000);//延时1s执行

3.Thread方法:

 

  1. new Thread(new Runnable() {
  2. @Override
  3. public void run() {
  4. try {
  5. Thread.sleep(1000);//延时1s
  6. //do something
  7. } catch (InterruptedException e) {
  8. e.printStackTrace();
  9. }
  10. }
  11. }).start();

自带定时器 CountDownTimer

CountDownTimer是一个倒计时的类,还可以指定时间间隔定期通知,举个栗子,比如说你倒计时是100秒的,可以指定每20秒通知一次,这样开始的时候会回调一次,20秒时会回调一次,40秒时会回调一次…,200秒时的回调和时间间隔的回调不同方法的。
常用方法:

  • cancel() 取消倒计时
  • onFinish() 时间到了,就会触发回调。
  • onTick 定期间隔触发回调
  • start() 开始倒计时
  1. CountDownTimer countDownTimer = new CountDownTimer(totalTime, 2000) {
  2. @Override
  3. public void onTick(long millisUntilFinished) {
  4. updateFileData(fileId); //执行任务
  5. }
  6. @Override
  7. public void onFinish() {
  8. if (User.getInstance().isLoginIng()) {
  9. if (countDownTimer != null) {
  10. countDownTimer.start();
  11. }
  12. }
  13. }
  14. };
  15. countDownTimer.start();


转载:https://www.jianshu.com/p/29401d15447d

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号