您的位置:首页 > 移动开发 > Android开发

Android开发之handler(四)

2015-06-22 11:36 405 查看
在handler(三)中点击打开链接,我们知道普通的handler类是没有实现多线程的,在android中的handler要实现多线程,可以使用HandlerThread这个类,如下所示

[java] view
plaincopy

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再循环获取这些消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: