android 开发 线程与线程通信,直接上代码
private Handler handler1;//主线程中的handler在子线程中使用
//线程一
public class Thread1 extends Thread {
public Handler getHandler1() {//注意哦,在run执行之前,返回的是null
return handler1;
}
@Override
public void run() {
Looper.prepare();
handler1 = new Handler() {
@Override
public void handleMessage(Message msg) {
//这里处理消息
Log.e("MThread1", "线程1收到消息了:----" + msg.obj);
}
};
Looper.loop();
}
}
//线程二
public class Thread2 extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
Message message = Message.obtain();
message.what = 1;
message.obj = System.currentTimeMillis() + "";
handler1.sendMessage(message);
Log.e("MThread2", "线程2----发送了消息!" + message.obj);
SystemClock.sleep(1000);
}
}
}
一般情况下的主线程和子线程之间的通信,都是通过主线程中的handler把子线程中的message发给主线程中的looper,或者,主线程中的handler通过post向looper中发送一个runnable。looper默认存在于main线程中。那么子线程中没有Looper,该怎么办呢?很简单,我们可以把looper绑定到子线程中,并且创建一个handler。在另一个线程中通过这个handler发送消息,就可以实现子线程之间的通信了。