运用Handler与线程的sleep(long)的安卓定时器

来源:互联网 发布:sql注入漏洞如何处理 编辑:程序博客网 时间:2024/05/22 14:25


采用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发送一次消息。
实例:
Java代码 复制代码 收藏代码
  1. package com.quding.thread;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.os.Handler;   
  6. import android.os.Looper;   
  7. import android.os.Message;   
  8. import android.util.Log;   
  9. import android.widget.TextView;   
  10.   
  11. public class MyCounter extends Activity{   
  12.   
  13.     private TextView mTextView;   
  14.     private Handler handler;   
  15.     private int count;   
  16.        
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {   
  19.         super.onCreate(savedInstanceState);   
  20.         setContentView(R.layout.mycounter);   
  21.         mTextView = (TextView) findViewById(R.id.mycounter_textView);   
  22.   
  23.         handler = new Handler(Looper.getMainLooper()){   
  24.             @Override  
  25.             public void handleMessage(Message msg) {   
  26.                 super.handleMessage(msg);   
  27.                 if(msg.what == 1){   
  28.                     //添加要干的事情   
  29.                     count++;   
  30.                     mTextView.setText(count + "");   
  31.                 }   
  32.             }   
  33.         };   
  34.            
  35.         new Thread(new MyThread()).start();   
  36.         Log.e("tag""cehsi");   
  37.   
  38.     }   
  39.        
  40.     public class MyThread implements Runnable{   
  41.         public void run() {   
  42.             while(true){   
  43.                 try {   
  44.                     Message message = new Message();   
  45.                     message.what = 1;   
  46.                     Thread.sleep(1000);   //间隔时间在这里定   
  47.                     //通过handler把这个线程的线程体放到主线程的消息队列中,使得该线程在主线程中执行   
  48.                     handler.sendMessage(message);   
  49.                 } catch (Exception e) {   
  50.                     e.printStackTrace();   
  51.                     }   
  52.             }   
  53.         }   
  54.     }   
  55. }  
0 0
原创粉丝点击