通过实际项目的练习,掌握了几种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中几种常用的定时器和延时方法的更多相关文章

  1. 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 UI开发第二十九篇——Android中五种常用的menu(菜单)

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

  4. Android中几种常用的话框

    1.普通对话框: Builder alert=new AlertDialog.Builder(MainActivity.this); alert.setTitle("提示"); a ...

  5. Android中三种超实用的滑屏方式汇总(转载)

    Android中三种超实用的滑屏方式汇总   现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于 ...

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

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

  7. JavaScript中,有三种常用的绑定事件的方法

    要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...

  8. 几种常用的JS类定义方法

    几种常用的JS类定义方法   // 方法1 对象直接量var obj1 = {    v1 : "",    get_v1 : function() {        return ...

  9. 【Android 界面效果28】Android应用中五种常用的menu

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

随机推荐

  1. 剑指Offer-38.平衡二叉树(C++/Java)

    题目: 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 分析: 可以从根节点开始遍历每一个节点,求得节点左右子树的最大高度,判断是不是平衡二叉树.这样做的问题在于会重复遍历节点,造成不必要的浪费. 所 ...

  2. JMeter命令行执行+生成HTML报告

    1.为什么用命令行模式 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死: 所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行: 命令 ...

  3. JVM发生full gc的情景有哪些

    除直接调用System.gc外,触发Full GC执行的情况有如下四种.1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然不 ...

  4. Ling to sql 多表查询,多个条件进行关联

    使用多表查询进行关联时,提示 join子句中其中一个表达式的类型不正确,注意字段类型和名称要一致,否则join时提示语法错误,错误截图如下 var incomeDetails = from a in ...

  5. vue-svgicon基本使用

    在项目开发中,经常会用到svg图标,之前用的都是vue-svg-icon,最近在npm中搜索svg图标解析插件,发现vue-svgicon用的相对较多,对比以下,vue-svgicon用法较为灵活,方 ...

  6. easyui-datagrid 使用笔记

    1.清空所有行和所有列 $('#dgJGQuery').datagrid({ columns: [], url: '', data: [] }); 2.采用 datagrid-groupview 分组 ...

  7. 【Gradle】Gradle插件

    Gradle插件 插件的作用 把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情. 1.可以添加任务到项目中,帮助完成测试.编译.打包等. 2.可以添加依赖配置到项目中,可以通过 ...

  8. springboot进入html

    话不多说,转载 https://blog.csdn.net/sinat_33889619/article/details/78339042 这个博客写的真好

  9. android 对于asset和raw下文件的操作

    Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets ...

  10. .deb 包如何安装到指定目录; Ubuntu; Debian like;

    有时候,我们没有root用户的时候,我们进行安装deb包就不能之间安装到系统之中了: 为了方便,我们可以直接解压 dpkg -x same.deb .; 直接解压到当前目录,然后在配置环境变量,即可启 ...