handler信息传递

public class HandlerMessage extends Activity {
	private TextView mTextView;
	private Button mButtonOne, mButtonTwo;
	private int count = 0;
	private MyThreadHandle threadHandle;
	private Handler mHandleThree;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.handler_get_message);
		mTextView = (TextView) findViewById(R.id.handler_txt);

		mButtonOne = (Button) findViewById(R.id.handler_one_btn);
		mButtonTwo = (Button) findViewById(R.id.handler_two_btn);

		threadHandle = new MyThreadHandle();
		threadHandle.start();

<span style="white-space:pre">		</span>//按钮点击事件,点击一次发送一次消息
		mButtonOne.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				Message mage = Message.obtain();
				mage.arg1 = count++;
				threadHandle.handlerOne.sendMessage(mage);

			}
		});

		mButtonTwo.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Message mage = Message.obtain();
				mage.arg1 = count++;
				threadHandle.handlerTwo.sendMessage(mage);

			}
		});
<span style="white-space:pre">		</span>//接收与子线程关联发送过来的消息
		mHandleThree = new Handler(Looper.getMainLooper(), new Callback() {// 主线程looper

					@Override
					public boolean handleMessage(Message msg) {
						int arg1 = msg.arg1;

						mTextView.setText("子线程   消息" + arg1);
						return true;
					}
				});
	}

	public class MyThreadHandle extends Thread {
		public Handler handlerOne, handlerTwo;

		@Override
		public void run() {
			Looper.prepare();
<span style="white-space:pre">				</span><pre name="code" class="html"><span style="white-space:pre">			</span>//getMainLooper(),与主线程关联
handlerOne = new Handler(Looper.getMainLooper(), new Callback() {// 主线程looper@Overridepublic boolean handleMessage(Message msg) {int arg1 = msg.arg1;Log.e("tag", "消息" + arg1);mTextView.setText("主线程 消息" + arg1);return true;}});

<pre name="code" class="html"><span style="white-space:pre">			</span>//<span style="font-family: Arial, Helvetica, sans-serif;">myLooper()</span><span style="font-family: Arial, Helvetica, sans-serif;">,与子线程关联</span>
handlerTwo = new Handler(Looper.myLooper(), new Callback() { // 子线程looper@Overridepublic boolean handleMessage(Message msg) {int arg1 = msg.arg1;// 将子线程中的数据返回到主线程中显示Message mas = new Message();mas.arg1 = arg1;mHandleThree.sendMessage(mas);return true;}});Looper.loop();}}}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值