Android三种实现定时器的方法

来源:互联网 发布:android ble数据交互 编辑:程序博客网 时间:2024/06/07 09:13

原博客:http://blog.csdn.net/yhm2046/article/details/8213629

方法一: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;            /**      * 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类自带的postDelyed

    package 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+TimerTask

    package 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;                @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);              }          };      }  


0 0
原创粉丝点击