<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>
<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>