android线程间通信

<span style="font-size:18px;">package com.example.handler;

import java.security.PublicKey;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
/*在多线程之间进行通信,这就要为每个线程都创建MessageQueue和Handler,
 * 只要线程能访问其他线程的Handler就可以与之通信*/
public class TestDemoActivity extends Activity {

	private Handler mHandler;
	private static int test_thread = 1;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_test_demo);
		
		//新建并启动实例
		new CustomThread().start();
		findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				String str = "Hello ,The msg from mainThread!";
				//发送到子线程,此处是主线程的handler访问拥有test_thread线程的handler
				mHandler.obtainMessage(test_thread,str).sendToTarget();
			}
		});
	}
	class CustomThread extends Thread{
		public void run() {
			//1.初始化looper
			
			/*如果创建线程时不指定Looper对象,那么此Handler绑定到创建此Handler的线程内,
			消息回调   处理会在那个线程中   执行,此处为主线程运行  customThread.start();
			所以,没有Looper,mhandler 是运行在主线程中的*/
			
			Looper.prepare();
			//2.绑定Looper对象
			mHandler = new Handler(){
			//3.设置消息
				public void handleMessage(Message msg) {
					if(msg.what == test_thread){
						Log.d("Test","customThread receive :"+ msg.obj);
					}
				}
			};
			//4.启动消息循环
			Looper.loop();
		}
	}
	

}</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值