在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呢,如下是官方的解释