Android三种实现定时器详解及实现方法

本文主要介绍 Android 定时器的知识资料,这里整理了三种方法来实现定时器的方法,有需要的小伙伴可以参考下。方法一:Handler+Thread


  1. package com.xunfang.handerDemo;  
  2.    
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.os.Message;  
  7. import android.widget.TextView;  
  8.    
  9. /**  
  10.  * handler定时器  
  11.  *  
  12.  * @author Smalt  
  13.  *  
  14.  */ 
  15. public class HanderDemoActivity extends Activity {  
  16.  TextView tvShow;  
  17.  private int i = 0;  
  18.    
  19.  @Override 
  20.  public void onCreate(Bundle savedInstanceState) {  
  21.   super.onCreate(savedInstanceState);  
  22.   setContentView(R.layout.main);  
  23.   tvShow = (TextView) findViewById(R.id.tv_show);  
  24.   new Thread(new ThreadShow()).start();  
  25.  }  
  26.    
  27.  // handler类接收数据  
  28.  Handler handler = new Handler() {  
  29.   public void handleMessage(Message msg) {  
  30.    if (msg.what == 1) {  
  31.     tvShow.setText(Integer.toString(i++));  
  32.     System.out.println("receive....");  
  33.    }  
  34.   };  
  35.  };  
  36.    
  37.  // 线程类  
  38.  class ThreadShow implements Runnable {  
  39.    
  40.   @Override 
  41.   public void run() {  
  42.    // TODO Auto-generated method stub  
  43.    while (true) {  
  44.     try {  
  45.      Thread.sleep(1000);  
  46.      Message msg = new Message();  
  47.      msg.what = 1;  
  48.      handler.sendMessage(msg);  
  49.      System.out.println("send...");  
  50.     } catch (Exception e) {  
  51.      // TODO Auto-generated catch block  
  52.      e.printStackTrace();  
  53.      System.out.println("thread error...");  
  54.     }  
  55.    }  
  56.   }  
  57.  }  
  58. }  

方法二:Handler类自带的postDelyed


  1. package com.xunfang.handerDemo;  
  2.    
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.widget.TextView;  
  7.    
  8. /**  
  9.  * handler定时器使用postDelyed实现  
  10.  *  
  11.  * @author Smalt  
  12.  *  
  13.  */ 
  14. public class HanderDemoActivity extends Activity {  
  15.  TextView tvShow;  
  16.  private int i = 0;  
  17.  private int TIME = 1000;  
  18.    
  19.  @Override 
  20.  public void onCreate(Bundle savedInstanceState) {  
  21.   super.onCreate(savedInstanceState);  
  22.   setContentView(R.layout.main);  
  23.   tvShow = (TextView) findViewById(R.id.tv_show);  
  24.   handler.postDelayed(runnable, TIME); //每隔1s执行  
  25.  }  
  26.    
  27.  Handler handler = new Handler();  
  28.  Runnable runnable = new Runnable() {  
  29.    
  30.   @Override 
  31.   public void run() {  
  32.    // handler自带方法实现定时器  
  33.    try {  
  34.     handler.postDelayed(this, TIME);  
  35.     tvShow.setText(Integer.toString(i++));  
  36.     System.out.println("do...");  
  37.    } catch (Exception e) {  
  38.     // TODO Auto-generated catch block  
  39.     e.printStackTrace();  
  40.     System.out.println("exception...");  
  41.    }  
  42.   }  
  43.  };  
  44.    
  45. }  

方法三:Handler+Timer+TimerTask


  1. package com.xunfang.handerDemo;  
  2.    
  3. import java.util.Timer;  
  4. import java.util.TimerTask;  
  5.    
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.os.Handler;  
  9. import android.os.Message;  
  10. import android.widget.TextView;  
  11.    
  12. /**  
  13.  * 定时器实现:Handler+Timer+TimerTask  
  14.  *  
  15.  * @author Smalt  
  16.  *  
  17.  */ 
  18. public class HanderDemoActivity extends Activity {  
  19.  TextView tvShow;  
  20.  private int i = 0;  
  21.  private int TIME = 1000;  
  22.    
  23.  @Override 
  24.  public void onCreate(Bundle savedInstanceState) {  
  25.   super.onCreate(savedInstanceState);  
  26.   setContentView(R.layout.main);  
  27.   tvShow = (TextView) findViewById(R.id.tv_show);  
  28.   timer.schedule(task, 1000, 1000); // 1s后执行task,经过1s再次执行  
  29.  }  
  30.    
  31.  Handler handler = new Handler() {  
  32.   public void handleMessage(Message msg) {  
  33.    if (msg.what == 1) {  
  34.     tvShow.setText(Integer.toString(i++));  
  35.    }  
  36.    super.handleMessage(msg);  
  37.   };  
  38.  };  
  39.  Timer timer = new Timer();  
  40.  TimerTask task = new TimerTask() {  
  41.    
  42.   @Override 
  43.   public void run() {  
  44.    // 需要做的事:发送消息  
  45.    Message message = new Message();  
  46.    message.what = 1;  
  47.    handler.sendMessage(message);  
  48.   }  
  49.  };  
  50. }  

以上就是对Android 定时器的资料整理后续继续补充相关知识,谢谢大家的支持!

作者:yhm2046

来源:51CTO

时间: 2024-09-13 13:10:54

Android三种实现定时器详解及实现方法的相关文章

Android 打包三种方式实例详解

Android 打包三种方式实例详解 前言: 现在市场上很多app应用存在于各个不同的渠道,大大小小几百个,当我们想要在发布应用之后统计各个渠道的用户下载量,我们就要进行多渠道打包. 01.应用的打包签名什么是打包? 打包就是根据签名和其他标识生成安装包. 签名是什么? 1.在android应用文件(apk)中保存的一个特别字符串 2.用来标识不同的应用开发者:开发者A,开发者B 3.一个应用开发者开发的多款应用使用同一个签名 就好比是一个人写文章,签名就相当于作者的署名. 如果两个应用都是一个

Python selenium 三种等待方式详解(必会)_python

很多人在群里问,这个下拉框定位不到.那个弹出框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待.殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥速度慢,哥不跟你玩了,抛个异常撂挑子了. 那么怎么才能照顾到凹凸曼缓慢的加载速度呢?只有一个办法,那就是等喽.说到等,又有三种等法,且听博主一一道来: 1. 强制等待

Window下PHP三种运行方式图文详解_php技巧

PHP能不能成功的在Apache服务器上运行,就看我们如何去配置PHP的运行方式. PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache服务器,以同一个进程运行. b.以CGI的方式运行,CGI英文叫做公共网关接口,就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,然后再相应请求的用户. c.以FastCGI的方式运行.这种形式是CGI的加强版

Android三种实现定时器的方法_Android

方法一.使用Handler和Thread(线程)实现定时器 复制代码 代码如下: package com.xunfang.handerDemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; public class HanderDemoActivity exte

Android三种实现定时器的方法

方法一.使用Handler和Thread(线程)实现定时器 复制代码 代码如下: package com.xunfang.handerDemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; public class HanderDemoActivity exte

Android 三种动画详解及简单实例

Android 三种动画详解 帧动画 一张张图片不断的切换,形成动画效果 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="

Android开发之基本控件和四种布局方式详解_Android

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

Android开发之基本控件和四种布局方式详解

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A