android开发教程之handle实现多线程和异步处理

2019-12-10 20:11:52刘景俊

        HandlerThread handlerThread = new HandlerThread("HandlerThread");//创建一个HandlerThread对象,它是一个线程 
        handlerThread.start();//启动线程 

        MyHandler myHandler = new MyHandler(handlerThread.getLooper());//创建一个MyHandler对象,该对象继承了Handler,从下面的MyHandler类中可以看到,调用的是Handler父类的Handler(Looper looper)的构造函数,而这里传进去的Looper对象是从HandlerThread中取得的。 
        Message msg = myHandler.obtainMessage();//获得消息对象 
        msg.sendToTarget();//把得到的消息对象发送给生成该消息的Handler,即myHandler,当myHandler接收到消息后,就会调用其handleMessage的方法来处理消息 
    } 

    class MyHandler extends Handler{ 
        public MyHandler() {//构造函数 
            // TODO Auto-generated constructor stub 
        } 

        public MyHandler(Looper looper){//构造函数 
            super(looper);//实现了父类的该构造函数 
        } 

        @Override 
        public void handleMessage(Message msg) {//当这个Handler接收到Message对象的时候,会自动调用这个方法,来对Message对象进行处理 
            // TODO Auto-generated method stub 
            System.out.println("Handler---->"+Thread.currentThread().getName()); 
        } 
    } 

上面的代码在LogCat中System.out的执行结果为:
Acitivity---->main
Handler---->HandlerThread
这就说明了,使用Handler,结合Looper和Message,可以实现与主线程的分离,从而可以实现多线程和异步处理。