Activity利用Handler与Thread进行通讯,写了一个简单Demo

来源:互联网 发布:js点击图片弹出div 编辑:程序博客网 时间:2024/05/16 17:02
最近写了一个列子,想跟大家一起分享. 
用android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用。 
这里只有Activity类代码.其他的一些布局文件,我想看到以下代码,你们因该明白. 

Activity代码  收藏代码
  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3.   
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.os.Handler;  
  7. import android.os.Looper;  
  8. import android.os.Message;  
  9. import android.util.Log;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.TextView;  
  14.   
  15. import com.wm.nsp.R;  
  16.   
  17. public class DateHandlerActiviy extends Activity {  
  18.   
  19.     private MyHandler myHandler;  
  20.     private TextView textView;  
  21.     private boolean bool = true;  
  22.     private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");  
  23.       
  24.     @Override  
  25.     protected void onCreate(Bundle savedInstanceState) {  
  26.           
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.date);  
  29.           
  30.         textView = (TextView)findViewById(R.id.textView);  
  31.         Button startButton = (Button)findViewById(R.id.startButton);  
  32.         Button endButton = (Button)findViewById(R.id.endButton);  
  33.           
  34.         startButton.setOnClickListener(listener);  
  35.         endButton.setOnClickListener(listener);  
  36.           
  37.         myHandler = new MyHandler(Looper.getMainLooper());  
  38.     }  
  39.       
  40.     private OnClickListener listener = new OnClickListener() {  
  41.           
  42.         @Override  
  43.         public void onClick(View v) {  
  44.             switch(v.getId()){  
  45.             case R.id.startButton:  
  46.                 bool = true;  
  47.                 new myThread().start();//启动线程,开始计时  
  48.                 break;  
  49.             case R.id.endButton:  
  50.                 bool = false;//结束线程  
  51.                 break;  
  52.             default:  
  53.                  break;  
  54.             }  
  55.         }  
  56.     };  
  57.       
  58.     class myThread extends Thread{  
  59.   
  60.         @Override  
  61.         public void run() {  
  62.             while(bool){  
  63.                 Message message = myHandler.obtainMessage();  
  64.                 message.what = 1;  
  65.                 message.obj = simpleDateFormat.format(new Date());  
  66.                 myHandler.sendMessage(message);  
  67.                 try {  
  68.                     Thread.sleep(1000);//休息一秒  
  69.                 } catch (InterruptedException e) {  
  70.                     // TODO Auto-generated catch block  
  71.                     e.printStackTrace();  
  72.                 }  
  73.             }  
  74.         }  
  75.     }  
  76.       
  77.     class MyHandler extends Handler{  
  78.   
  79.         public MyHandler(Looper looper){  
  80.             super(looper);  
  81.         }  
  82.           
  83.         @Override  
  84.         public void handleMessage(Message msg) {  
  85.             Log.i("System.out", msg.obj+"");  
  86.             if(msg.what == 1){  
  87.                 textView.setText(msg.obj.toString());  
  88.             }  
  89.         }  
  90.     }  
  91. }  

from :  http://wangming2012.iteye.com/blog/1558743

原创粉丝点击