当前位置:   article > 正文

android定时器常用方法,Android中几种常用的定时器和延时方法

android 中 mbinding?.hourstv?.postdelayed 停止触发

通过实际项目的练习,掌握了几种android基本定时器和延时的用法,这里我想总结一下作为自己的收获,下面列出的是比较简洁的模式,方便简单地在程序中直接调用。

一、三种常用的定时器

1.Handler类的postDelayed方法:

db4868d1fcbc538af28d1757da8ef1b3.gif

1 Handler mHandler = new Handler();

2 Runnable r = new Runnable() {

3

4 @Override

5 public void run() {

6 //do something

7 //每隔1s循环执行run方法

8 mHandler.postDelayed(this, 1000);

9 }

10 };

11

12

13 主线程中调用: mHandler.postDelayed(r, 100);//延时100毫秒

721fece3a3fcea0a9b59c2a55cba1492.gif

2.用handler+timer+timeTask方法:

cc302865eff27aa265252070e764121b.gif

1 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

11 Timer timer = new Timer();

12 TimerTask timerTask = new TimerTask() {

13 @Override

14 public void run() {

15 Message message = new Message();

16 message.what = 1;

17 handler.sendMessage(message);

18 }

19 };

20 主线程中调用:timer.schedule(timerTask,1000,500);//延时1s,每隔500毫秒执行一次run方法

59e59bae502e978b1a2aff6c8446c51f.gif

3.Thread+handler方法:

b96713fbb9b8d5e6db463a45be6dacef.gif

1 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 };

11

12 class MyThread extends Thread {//这里也可用Runnable接口实现

13 @Override

14 public void run() {

15 while (true){

16 try {

17 Thread.sleep(1000);//每隔1s执行一次

18 Message msg = new Message();

19 msg.what = 1;

20 handler.sendMessage(msg);

21 } catch (InterruptedException e) {

22 e.printStackTrace();

23 }

24

25 }

26 }

27 }

28 主线程中调用:new Thread(new MyThread()).start();

83e400953f12d8b2466aa8510a199525.gif

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

1.Handler的postDelayed方法:

8fc12e194794fa2d76bda518c69b035a.gif

1 new Handler().postDelayed(new Runnable() {

2

3 @Override

4 public void run() {

5 //do something

6 }

7 }, 1000); //延时1s执行

116864a8597be509b0d3e660dbce4ff5.gif

2.timer + TimerTask方法:

73308893fcfcfc9aeb3ab87635fedaca.gif

1 timer = new Timer();

2 timer.schedule(new TimerTask() {

3 @Override

4 public void run() {

5 //do something

6 }

7 },1000);//延时1s执行

9c41442e2bbe0320629019f86a488ce3.gif

3.Thread方法:

4badddd1037aa00ff2d341576249ec5f.gif

1 new Thread(new MyThread()).start();

2 new Thread(new Runnable() {

3 @Override

4 public void run() {

5 try {

6 Thread.sleep(1000);//延时1s

7 //do something

8 } catch (InterruptedException e) {

9 e.printStackTrace();

10 }

11 }

12 }).start();

fae2e7c67cab0777ba6d3e41130a8c9a.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/240612?site
推荐阅读
相关标签
  

闽ICP备14008679号