Android之三种实现定时器的方法
来源:互联网 发布:阿里巴巴java工程师 编辑:程序博客网 时间:2024/06/05 09:50
方法一:Handler+Threadpackage com.xunfang.handerDemo; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.TextView; /** * handler定时器 * * @author Smalt * */public class HanderDemoActivity 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类自带的postDelyedpackage com.xunfang.handerDemo; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.widget.TextView; /** * handler定时器使用postDelyed实现 * * @author Smalt * */public class HanderDemoActivity 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); handler.postDelayed(runnable, TIME); //每隔1s执行 } Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { // handler自带方法实现定时器 try { handler.postDelayed(this, TIME); 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+TimerTaskpackage com.xunfang.handerDemo;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;/*** 定时器实现:Handler+Timer+TimerTask** @author Smalt**/public class HanderDemoActivity extends Activity {TextView tvShow;private int i = 0;private int TIME = 1000;@Overridepublic 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() {@Overridepublic void run() {// 需要做的事:发送消息Message message = new Message();message.what = 1;handler.sendMessage(message);}};}
//---------------------------------------------------
使用Timer的schedule()方法 schedule的意思(时间表、进度表)timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);第一个参数"new MyTask(event.getServletContext())":是 TimerTask 类,在包:import java.util.TimerTask .使用者要继承该类,并实现 public void run() 方法,因为 TimerTask 类实现了 Runnable 接口。第二个参数"0"的意思是:(0就表示无延迟)当你调用该方法后,该方法必然会调用 TimerTask 类 TimerTask 类 中的 run() 方法,这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule() 方法后,要等待这么长的时间才可以第一次执行 run() 方法。第三个参数"60*60*1000"的意思就是:(单位是毫秒60*60*1000为一小时)(单位是毫秒3*60*1000为三分钟)第一次调用之后,从第二次开始每隔多长的时间调用一次 run() 方法。
0 0
- Android开发之实现定时器的三种方法
- Android之三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- iOS KVO新姿势
- 有章法的学习c++(4)基本内置类型(二)
- 文本处理join使用
- CENTOS VPN 搭建心得
- 5.其他需要注意的技术
- Android之三种实现定时器的方法
- 在Unreal中写一段文字HUD
- echo print() print_r() var_dump()的区别
- EditPlus注册码
- 6.服务器部署
- java项目开发经验总结
- 我听说你不需要密码?Cisco ASA SNMP RCE漏洞分析利用
- QT类函数
- Flask Web 开发 博客文章