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

通过实际项目的练习,掌握了几种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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值