`
wangming2012
  • 浏览: 141089 次
  • 性别: Icon_minigender_1
  • 来自: 枣阳
社区版块
存档分类
最新评论

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

阅读更多
最近写了一个列子,想跟大家一起分享.
用android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用。
这里只有Activity类代码.其他的一些布局文件,我想看到以下代码,你们因该明白.
import java.text.SimpleDateFormat;
import java.util.Date;

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.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.wm.nsp.R;

public class DateHandlerActiviy extends Activity {

	private MyHandler myHandler;
	private TextView textView;
	private boolean bool = true;
	private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.date);
		
		textView = (TextView)findViewById(R.id.textView);
		Button startButton = (Button)findViewById(R.id.startButton);
		Button endButton = (Button)findViewById(R.id.endButton);
		
		startButton.setOnClickListener(listener);
		endButton.setOnClickListener(listener);
		
		myHandler = new MyHandler(Looper.getMainLooper());
	}
	
	private OnClickListener listener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			switch(v.getId()){
			case R.id.startButton:
				bool = true;
				new myThread().start();//启动线程,开始计时
				break;
			case R.id.endButton:
				bool = false;//结束线程
				break;
			default:
				 break;
			}
		}
	};
	
	class myThread extends Thread{

		@Override
		public void run() {
			while(bool){
				Message message = myHandler.obtainMessage();
				message.what = 1;
				message.obj = simpleDateFormat.format(new Date());
				myHandler.sendMessage(message);
				try {
					Thread.sleep(1000);//休息一秒
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	class MyHandler extends Handler{

		public MyHandler(Looper looper){
			super(looper);
		}
		
		@Override
		public void handleMessage(Message msg) {
			Log.i("System.out", msg.obj+"");
			if(msg.what == 1){
				textView.setText(msg.obj.toString());
			}
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics