Android 三种实现定时器详解及实现方法

方法一: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);   }  }; } 

以上就是对Android 定时器的资料整理后续继续补充相关知识,谢谢大家对本站的支持!

而消极的人则在每个机会都看到某种忧患。

Android 三种实现定时器详解及实现方法

相关文章:

你感兴趣的文章:

标签云: