Android实现定时器的方法
2015-09-10 15:30
465 查看
一、Handler和Thread
二、Handler的postDelyed方法
三、Handler+Timer+TimerTask
packagecom.lstech.app; importandroid.app.Activity; importandroid.os.Bundle; importandroid.os.Handler; importandroid.os.Message; importandroid.widget.TextView; /** *handler定时器 * * */ publicclassHandlerActivityextendsActivity{ TextViewtvShow; privateinti=0; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); tvShow=(TextView)findViewById(R.id.tv_show); newThread(newThreadShow()).start(); } //handler类接收数据 Handlerhandler=newHandler(){ publicvoidhandleMessage(Messagemsg){ if(msg.what==1){ tvShow.setText(Integer.toString(i++)); System.out.println("receive...."); } }; }; //线程类 classThreadShowimplementsRunnable{ @Override publicvoidrun(){ //TODOAuto-generatedmethodstub while(true){ try{ Thread.sleep(1000); Messagemsg=newMessage(); msg.what=1; handler.sendMessage(msg); System.out.println("send..."); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("threaderror..."); } } } } }
二、Handler的postDelyed方法
packagecom.lstech.app;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.widget.TextView;
/**
*handler定时器使用postDelyed实现
*
*/
publicclasspostDelyedActivityextendsActivity{
TextViewtvShow;
privateinti=0;
privateintDELYED=1000;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
handler.postDelayed(runnable,DELYED);//每隔1s执行
}
Handlerhandler=newHandler();
Runnablerunnable=newRunnable(){
@Override
publicvoidrun(){
//handler自带方法实现定时器
try{
handler.postDelayed(this,DELYED);
tvShow.setText(Integer.toString(i++));
System.out.println("do...");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("exception...");
}
}
};
}
三、Handler+Timer+TimerTask
packagecom.lstech.app;
importjava.util.Timer;
importjava.util.TimerTask;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.widget.TextView;
/**
*定时器实现
**
*/
publicclassTimerActivityextendsActivity{
TextViewtvShow;
privateinti=0;
privateintTIME=1000;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvShow=(TextView)findViewById(R.id.tv_show);
timer.schedule(task,1000,1000);//1s后执行task,经过1s再次执行
}
Handlerhandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
if(msg.what==1){
tvShow.setText(Integer.toString(i++));
}
super.handleMessage(msg);
};
};
Timertimer=newTimer();
TimerTasktask=newTimerTask(){
@Override
publicvoidrun(){
//需要做的事:发送消息
Messagemessage=newMessage();
message.what=1;
handler.sendMessage(message);
}
};
}
相关文章推荐
- Square:从今天开始抛弃Fragment吧!
- Android之layout属性介绍
- 客户端 ios与android 的判断
- Android 内存溢出 内存泄漏(一)
- android中的跨进程服务组件aidl
- Androidの自定义对话框AlertDialog(二)
- android线程总结
- Android EventBus源码解析 带你深入理解EventBus
- Android EventBus实战 没听过你就out了
- android selector 基础小记
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- android-5.0 sensor工作原理—sensorservice的启动(二)
- Android Studio 中Copyright 设置
- Android系统的开机画面显示过程分析
- Android图片的三级缓存管理
- android——json解析
- Android ListView嵌套GridView方法
- android 解决方法数超65536
- Android 4.4音量键控制音量流程
- Android中onMeasure方法详解