Android中几种常用的定时器和延时方法
通过实际项目的练习,掌握了几种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 @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 @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();

二、三种延时的快捷方法:
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 @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();

Android中几种常用的定时器和延时方法的更多相关文章
- Java中几种常用数据类型之间转换的方法
Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...
- Android中五种常用的menu
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
- Android UI开发第二十九篇——Android中五种常用的menu(菜单)
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
- Android中几种常用的话框
1.普通对话框: Builder alert=new AlertDialog.Builder(MainActivity.this); alert.setTitle("提示"); a ...
- Android中三种超实用的滑屏方式汇总(转载)
Android中三种超实用的滑屏方式汇总 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于 ...
- Android中四种补间动画的使用示例(附代码下载)
场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程 ...
- JavaScript中,有三种常用的绑定事件的方法
要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...
- 几种常用的JS类定义方法
几种常用的JS类定义方法 // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { return ...
- 【Android 界面效果28】Android应用中五种常用的menu
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
随机推荐
- 【使用篇二】QueryDSL与SpringDataJPA协作使用(20)
QueryDSL是一个Java语言编写的通用查询框架,专注于通过JavaAPI方式构建安全的SQL查询.QueryDSL可以应用到NoSQL数据库上,QueryDSL查询框架可以在任何支持的ORM框架 ...
- vue 路由对象
路由对象在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新. so , 路由对象暴露了以下属性: 1.$rout ...
- Node.js module export async function
一.Demo 1.首先定义 module 文件:bbb.js const fs = require("fs"); function readFileSync() { let res ...
- PowerMock学习(八)之Mock Argument Matcher的使用
前言 本计划在上周六日将powermock学完,并同步到博客中,结果自己没经得住诱惑,又开始去打王者荣耀了.虽然两天时间我从钻石一升到了星耀V四星,但是我并没有觉得很开心,相反很失落呢.不得不说腾讯的 ...
- python的pstuil模块总结
import psutil print(dir(psutil)) # 查看逻辑cpu的个数 print(psutil.cpu_count()) # 查看物理cpu的个数 print(psutil.cp ...
- 本地SQL Server数据库提示网络问题无法连接
运行程序时发现本地SQLserver数据库无法连接,提示信息为:在与SQL Server 建立连接时出现与网络相关的或特定与实例的错误.未能找到或无法访问服务器.请验证实例名称是否正确并且SQL Se ...
- RESTFUL如何指导WEB API设计?
博主刚刚接触web开发的时候,写了一个接口 /get_article_info/1 获取id为1的这篇文章的内容,被前辈们看见了,前辈给我说我这个接口设计的不太好啊,不符合RESTFUL规范,当前辈们 ...
- Spark中持久化和序列化学习
一.cache和persisit的对比 -rw-r--r--@ 1 hadoop staff 68M 5 17 07:04 access.log    cache/persitence是 laz ...
- oracle表空间设置自动扩展
开启自动扩展功能语法: alter database datafile '对应的数据文件路径信息' autoextend on; 关闭自动扩展功能语法: alter database datafile ...
- mssql sqlserver text、image字段类型无法使用DISTINCT的处理方法分享
转自: http://www.maomao365.com/?p=9775 摘要: 下文简述sqlserver数据库中 text image类型无法使用distinct的处理方法分享 实验环境:sql ...