Android开发之handler(四)

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

Android开发之handler(四)_第1张图片

         大概的意思就是说,looper是用来循环获取消息的,那么整个流程就可以看作是handler往消息队列中添加消息,looper再循环获取这些消息。

你可能感兴趣的:(Android开发之handler(四))