在handler(三)中点击打开链接,我们知道普通的handler类是没有实现多线程的,在android中的handler要实现多线程,可以使用HandlerThread这个类,如下所示
package com.handlerThread;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
public class handlerThread2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("activity线程ID:"+Thread.currentThread().getId());
HandlerThread handlerThread = new HandlerThread("handlerThread");
handlerThread.start();
MyHandler handler = new MyHandler(handlerThread.getLooper());
Message msg = handler.obtainMessage();
msg.sendToTarget();
}
class MyHandler extends Handler {
public MyHandler() {
super();
// TODO Auto-generated constructor stub
}
public MyHandler(Looper looper) {
super(looper);
// TODO Auto-generated constructor stub
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
System.out.println("handler线程ID:"+Thread.currentThread().getId());
}
}
}
运行结果:

由此才可以说handler实现了真正意义上的多线程。
在上面的程序中我们看到有个新知识looper,那么什么是looper呢,如下是官方的解释

本文介绍如何使用HandlerThread在Android中实现真正的多线程操作。通过创建并启动HandlerThread实例,配合Looper循环获取消息,使得Handler可以在独立的线程中处理消息。
&spm=1001.2101.3001.5002&articleId=8194875&d=1&t=3&u=edf37a6408704d0cb170abdf9b38a9d4)
2044

被折叠的 条评论
为什么被折叠?



