https://blog.csdn.net/wsq_tomato/article/details/80301851
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MESSAGE_WHAT:
Log.d(TAG, "main thread receiver message: " + ((String) msg.obj));
break;
}
}
};
private void sendMessageToMainThreadByWorkThread() {
new Thread(){
@Override
public void run() {
Message message = mHandler.obtainMessage(MESSAGE_WHAT);
message.obj = "I am message from work thread";
mHandler.sendMessage(message);
}
}.start();
}
发消息是在子线程中
而接受到消息是在主线程的handler中(实际上是handler与主线程绑定了。如上图那样就是)
如果想单独出来线程的循环Looper则需要,new HandlerThread(线程名称);–》里面维护了一个Looper,其他的线程没有这么循环期,如果想让这个线程和handler绑定则需要如下方法:
而Runnable是一个接口,Thread是Runnable的子类。可以说,他俩都算一个进程。
mHandlerThread = new HandlerThread("handler_thread");
//开始运行线程
mHandlerThread.start();
//获取HandlerThread线程中的Looper实例
Looper loop = mHandlerThread.getLooper();
//创建Handler与该线程绑定。
mSubThreadHandler = new Handler(loop){
public void handleMessage(Message msg) {
手机扫一扫
移动阅读更方便
你可能感兴趣的文章