一、Handler 和 Thread

package com.lstech.app;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView; /**
* handler定时器
*
*
*/
public class HandlerActivity extends Activity {
TextView tvShow;
private int i = 0; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow = (TextView) findViewById(R.id.tv_show);
new Thread(new ThreadShow()).start();
} // handler类接收数据
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
tvShow.setText(Integer.toString(i++));
System.out.println("receive....");
}
};
}; // 线程类
class ThreadShow implements Runnable { @Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
System.out.println("send...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("thread error...");
}
}
}
}
}

二、Handler的postDelyed方法

package com.lstech.app; 
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView; /**
* handler定时器使用postDelyed实现
*
*/
public class postDelyedActivity extends Activity {
TextView tvShow;
private int i = 0;
private int DELYED= 1000; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow = (TextView) findViewById(R.id.tv_show);
handler.postDelayed(runnable, DELYED); //每隔1s执行
} Handler handler = new Handler();
Runnable runnable = new Runnable() { @Override
public void run() {
// handler自带方法实现定时器
try {
handler.postDelayed(this, DELYED);
tvShow.setText(Integer.toString(i++));
System.out.println("do...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("exception...");
}
}
}; }

三、Handler + Timer + TimerTask

package com.lstech.app;

import java.util.Timer;
import java.util.TimerTask; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView; /**
* 定时器实现
* *
*/
public class TimerActivity extends Activity {
TextView tvShow;
private int i = 0;
private int TIME = 1000; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow = (TextView) findViewById(R.id.tv_show);
timer.schedule(task, 1000, 1000); // 1s后执行task,经过1s再次执行
} Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
tvShow.setText(Integer.toString(i++));
}
super.handleMessage(msg);
};
};
Timer timer = new Timer();
TimerTask task = new TimerTask() { @Override
public void run() {
// 需要做的事:发送消息
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}

Android实现定时器的方法的更多相关文章

  1. 【Android】一种提高Android应用进程存活率新方法

    [Android]一种提高Android应用进程存活率新方法 SkySeraph Jun. 19st 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph ...

  2. (转)Android之常用功能方法大集合

    这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...

  3. Android经典完美退出方法

    Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activit ...

  4. Android获取系统时间方法的总结

    Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...

  5. 删除Android自带软件方法及adb remount 失败解决方案

    删除Android自带软件方法 1.在电脑上打开cmd,然后输入命令 adb remount adb shell su 2.接着就是Linux命令行模式了,输入 cd system/app 3然后输入 ...

  6. PhoneGap 在 Android 上的插件开发方法介绍

    移动应用开发已经成为软件开发的一个重要方向,但是移动开发面临的一个重要问题就是跨平台的问题.PhoneGap 作为一个多平台的软件开发框架,提供了一次编写多个平台的运行.目前已经支持多达 6 个移动平 ...

  7. Android之完美退出方法

    为什么要写这篇文章? 网上有很多种退出方法,可实际上很多方法都不通用(在某个版本下可用,到了另一个版本就不行),或者方法的实际效果根本就和其描述不符(也不知道那些发帖的人测没测试过). 但我们的需求又 ...

  8. android view的setVisibility方法值的意思

    android view的setVisibility方法值的意思 有三个值 visibility  One of VISIBLE, INVISIBLE, or GONE. 常量值为0,意思是可见的 常 ...

  9. Eclipse导入Android项目的正确方法

    转自Eclipse导入Android项目的正确方法 看网上流传的Eclipse导入项目的方法都是在新建Android程序时使用"Create project form existing so ...

随机推荐

  1. 关于ES6扩展属性

    ES6 let和const let命令 只在代码块作用域内有效 不存在变量提升(不能在申明之前赋值) 暂时性死区(在区域内不受外部变量影响) 不允许重复申明(在相同代码块区域内) 块级作用域 let为 ...

  2. phonegap 新窗口 WebView

    自定义WebView窗口打开 import com.ap.work.QuickWeb public class QuickPlugin extends CordovaPlugin { /** * 新开 ...

  3. c++10 Seattle Clang error

    升级到C++Builder RAD 10 Settle 一些错误解决方法,使用LLVM  CLang编译器,BCC32C http://docwiki.embarcadero.com/RADStudi ...

  4. 個人最近做的最多的重複工作就是excel导出

    //导出事件,这个是有合并动态列的 double num1 = 0, num2 = 0, num3 = 0; protected void btnExcel_Click(object sender,  ...

  5. AJAX的工作原理及其优缺点

    1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...

  6. 重学HTML

    http://www.imooc.com/learn/9 1.em/strong 如果想在一段话中特别强调某几个文字,这时候就可以用到<em>或<strong>标签. 但两者在 ...

  7. WPF中的ControlTemplate(控件模板)(转)

    原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板)     ...

  8. android wifi总结

    大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager (1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的w ...

  9. 实用的树形菜单控件tree

     jQuery plugin: Treeview  这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview  jQuery  jstree  jsTree ...

  10. Android ndk下用AssetManager读取assets的资源

    转自:http://www.cppblog.com/johndragon/archive/2012/12/28/196754.html 在使用 cocos2dx 在 Android 上进行游戏开发时, ...