采用Handle与线程的sleep(long )方法Handler主要用来处理接受到的消息。这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API。
1.定义一个Handler类,用于处理接受到的Message.
Handler handler = new Handler() {
public void handleMessage(Message msg) {
//要做的事情
super.handleMessage(msg);
}
};
2.新建一个实现Runnable接口的线程类。如下:
public class MyThread implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);//线程暂停10秒,单位毫秒
Message message=new Message();
message.what=1;
handler.sendMessage(message);//发送消息
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3.在需要启动线程的地方加入下面语句:
new Thread(new MyThread()).start();
4.启动线程后,线程每10s发送一次消息。
new Thread(new MyThread()).start();
4.启动线程后,线程每10s发送一次消息。
实例:
- package com.quding.thread;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Looper;
- import android.os.Message;
- import android.util.Log;
- import android.widget.TextView;
- public class MyCounter extends Activity{
- private TextView mTextView;
- private Handler handler;
- private int count;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.mycounter);
- mTextView = (TextView) findViewById(R.id.mycounter_textView);
- handler = new Handler(Looper.getMainLooper()){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- if(msg.what == 1){
- //添加要干的事情
- count++;
- mTextView.setText(count + "");
- }
- }
- };
- new Thread(new MyThread()).start();
- Log.e("tag", "cehsi");
- }
- public class MyThread implements Runnable{
- public void run() {
- while(true){
- try {
- Message message = new Message();
- message.what = 1;
- Thread.sleep(1000); //间隔时间在这里定
- //通过handler把这个线程的线程体放到主线程的消息队列中,使得该线程在主线程中执行
- handler.sendMessage(message);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- }