博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中几种常用的定时器和延时方法
阅读量:6305 次
发布时间:2019-06-22

本文共 2939 字,大约阅读时间需要 9 分钟。

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

一、三种常用的定时器 
1.Handler类的postDelayed方法:

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毫秒

2.用handler+timer+timeTask方法:

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         @Override14         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方法

3.Thread+handler方法:

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         @Override14         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();

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

1.Handler的postDelayed方法:

1 new Handler().postDelayed(new Runnable() {2 3         @Override4         public void run() {5               //do something6           }7        }, 1000);    //延时1s执行

2.timer + TimerTask方法:

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

3.Thread方法:

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();

转载于:https://www.cnblogs.com/derekhan/p/11043711.html

你可能感兴趣的文章
【工具】系统性能查看工具 dstat
查看>>
基于zepto或jquery的手机端弹出框成功,失败,加载特效
查看>>
php引用(&)
查看>>
关押罪犯
查看>>
k8s-高可用架构设计
查看>>
第93天:CSS3 中边框详解
查看>>
第189天:BOM属性方法
查看>>
操作系统
查看>>
volatile小记
查看>>
Socket通道
查看>>
微信接口调用返回码一览表
查看>>
PCI Express(四) - The transaction layer
查看>>
vue-router 使用a链接跳转至二级子页面偶尔会出现地址栏看不见路由和参数的情况...
查看>>
连接mongodb服务
查看>>
2017 ACM/ICPC Asia Regional Qingdao Online 1011 A Cubic number and A Cubic Number
查看>>
创建多个线程、互斥量、死琐
查看>>
shell自定义函数
查看>>
windows 7 资源管理器预览 js 文件方法
查看>>
《构建之法》阅读笔记五
查看>>
Python 异常处理
查看>>