xml:
package com.example.zobject.myapplication;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button button;
private TextView textView;
private Handler mhander;
private Handler xhander;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.textView2);
Sub sub= new Sub();
Sub2 sub2=new Sub2();
sub.start();
sub2.start();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
Message message1 = new Message();
message1.what = 1;
handler.sendMessage(message);// 利用主线程的handle给主线程的messagequeue发送message
mhander.sendMessage(message1);//利用子线程的handler给子线程发送消息
}
}).start();
}
});
}
private Handler handler = new Handler() {// new 一个主线程的handler
@Override
public void handleMessage(Message msg) {//从messagequeue中获得message 根据相应的what进行不同的操作
switch (msg.what) {
case 1:
textView.setText("aaax");
break;
}
}
};
class Sub extends Thread {
@Override
public void run() {
Looper.prepare();
mhander = new Handler() {
@Override
public void handleMessage(Message msg) {//子线程收到主线程发的消息进行结果处理
switch (msg.what) {
case 1:
Toast.makeText(MainActivity.this, "xxxxxxx", Toast.LENGTH_LONG).show();
Message message1 = new Message();
message1.what = 1;
xhander.sendMessage(message1);//在子线程中给另外一个子线程发送消息
}
}
};
Looper.loop();
}
}
class Sub2 extends Thread{
@Override
public void run() {
Looper.prepare();
xhander=new Handler(){
@Override
public void handleMessage(Message msg) {//子线程收到另一个子线程发送的消息进行消息处理
switch (msg.what){
case 1:
Toast.makeText(MainActivity.this, "ccccccccc", Toast.LENGTH_LONG).show();
}
}
};
Looper.loop();
}
}
}
点击前 子线程收到主线程的消息主线程收到子线程的消息
子线程收到子线程发送的消息