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

 1 Handler mHandler = new Handler();2                  Runnable r = new Runnable() {3 4                     @Override5                     public void run() {6                             //do something7                             //每隔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         @Override3         public void handleMessage(Message msg) {4             if (msg.what == 1){5                 //do something6             }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方法

3.Thread+handler方法:

 1 Handler handler = new Handler() {2         @Override3         public void handleMessage(Message msg) {4             if (msg.what == 1){5                 //do something6             }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();

二、三种延时的快捷方法: 
1.Handler的postDelayed方法:

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

2.timer + TimerTask方法:

1   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 MyThread()).start();2         new Thread(new Runnable() {3             @Override4             public void run() {5                 try {6                     Thread.sleep(1000);//延时1s7                     //do something8                 } catch (InterruptedException e) {9                     e.printStackTrace();
10                 }
11             }
12         }).start();

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

Android中几种常用的定时器和延时方法相关推荐

  1. JAVA中方法的类型转换_Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  2. Android中五种常用的menu

    Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...

  3. Android中五种常用对话框的使用

    场景 Android中常用的五种对话框为 常规对话框.带列表的对话框.自定义的对话框.带进度条的对话框.带日期选择器的对话框. 注: 博客: https://blog.csdn.net/badao_l ...

  4. Android UI开发第二十九篇——Android中五种常用的menu(菜单)

    Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...

  5. 看门狗(Watch Dog)是嵌入式系统中一种常用的保证系统可靠性的技术,()会产生看门狗中断。【详细!小白也能看懂!】

    看门狗(Watch Dog)是嵌入式系统中一种常用的保证系统可靠性的技术,()会产生看门狗中断. A. 软件喂狗 B. 处理器温度过高 C. 外部中断 D. 看门狗定时器超时 解析: 思考方式: 每个 ...

  6. Android中四种补间动画的使用示例(附代码下载)

    场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...

  7. android中几种定位方式详解

    目录 前言: 1.GPS定位 2.NETWORK定位 3.AGPS定位 4.基站定位 5.WIFI定位 6.混合定位 目前,移动端大致通过三种方式来进行设备定位:GPS.基站.wifi.本文就详细的讲 ...

  8. 写出python字符串三种常用的函数或方法_python中几种常用字符串函数

    1.lower()把所有字符换成小写 2.upper()把所有字符换成大写 3.swapcase()大小写互换 4.title()把每个单词首字母大写,他是以所有英文字母的字符来区别是否为一个单词的, ...

  9. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

最新文章

  1. Spring MVC 返回json数据 报406错误 问题解决方案
  2. 奔图打印机显示未连接_手机连接奔图打印机,无法打印的解决方法
  3. 在CDS(Core Data Services)中使用DCL(Data Control Language)
  4. 技术核心 | MySQL性能结构优化原理
  5. 【Android XMPP】 学习资料收集贴(持续更新)
  6. java ASM看到写的比较好的文章
  7. [转]JS弹出div和关闭
  8. mysql lower case_mysql lower-case-table-names参数
  9. AWVS14.7破解版免费获取
  10. FPGA基础知识(四)UG902 RTL仿真与输出
  11. linux python2.7安装pip_linux安装pip2.7
  12. 浪曦 ASP.net AJAX系列 视频下载
  13. 网络基础-应用层:E-mail应用:SMTP协议,POP协议,IMAP协议
  14. 将无线网卡变身为 wifi 热点的 完整批处理文件 或者 让i电脑变成wifi热点
  15. 计算机、通信方向学习考证经验分享
  16. 时间与日期——瞬时(Instant)
  17. 利用最小二乘法进行线性拟合
  18. 用频谱仪测量晶体频率的方法
  19. TP- LINK企业级vp-n路由器ipsec场景与实施(野蛮模式)
  20. ciscn_2019_qual_virtual

热门文章

  1. Android log打印不出来
  2. 从前到后的CAN总线(一)
  3. 什么是API,SDK?它们之间有什么关系?
  4. 撸个注解有什么难的 请看这里
  5. 行业 平均年龄_2019中国“新生力”白皮书:平均年龄35岁,千万资产家庭达198万户!...
  6. java websocket_理清 WebSocket 和 HTTP 的关系
  7. 本地导入Android-PullToRefresh库问题解决
  8. MySQL行(记录)的详细操作
  9. 译: 5. RabbitMQ Spring AMQP 之 Topic 主题
  10. python 自带的range是不能实现对小数的操作的,如果要对小数操作可以使用numpy...