Android三种实现定时器的方法
16lz
2022-04-02
方法一:Handler+Thread
[java] view plain copy
- packagecom.xunfang.handerDemo;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.widget.TextView;
- /**
- *handler定时器
- *
- *@authorSmalt
- *
- */
- publicclassHanderDemoActivityextendsActivity{
- 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
[java] view plain copy
- packagecom.xunfang.handerDemo;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.widget.TextView;
- /**
- *handler定时器使用postDelyed实现
- *
- *@authorSmalt
- *
- */
- publicclassHanderDemoActivityextendsActivity{
- TextViewtvShow;
- privateinti=0;
- privateintTIME=1000;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tvShow=(TextView)findViewById(R.id.tv_show);
- handler.postDelayed(runnable,TIME);//每隔1s执行
- }
- Handlerhandler=newHandler();
- Runnablerunnable=newRunnable(){
- @Override
- publicvoidrun(){
- //handler自带方法实现定时器
- try{
- handler.postDelayed(this,TIME);
- tvShow.setText(Integer.toString(i++));
- System.out.println("do...");
- }catch(Exceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- System.out.println("exception...");
- }
- }
- };
- }
方法三:
Handler+Timer+TimerTask
[java] view plain copy
- packagecom.xunfang.handerDemo;
- importjava.util.Timer;
- importjava.util.TimerTask;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.widget.TextView;
- /**
- *定时器实现:Handler+Timer+TimerTask
- *
- *@authorSmalt
- *
- */
- publicclassHanderDemoActivityextendsActivity{
- 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);
- }
- };
- }
更多相关文章
- Android实现定时器的方法
- Android(安卓)PackageManager 卸载包的方法
- Android(安卓)P ActivityManagerService(六) startActivity的第四
- Android(安卓)View.startAnimation()动画
- Android全屏的两种方法
- Android学习笔记4——Activity的生命周期
- android 監聽系統屬性變化的方法
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用