当前位置: 代码迷 >> Android >> Android开发之handler(4)
  详细解决方案

Android开发之handler(4)

热度:75   发布时间:2016-05-01 12:52:22.0
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呢,如下是官方的解释


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