Android开发之 Handler、Message、MessageQueue、Looper

handler 用于线程间传值通讯。

MessageQueue:消息队列,用于存放Message。每个线程最多有一个MessageQueue数据结构。线程不会主动创建MessageQueue。UI线程自带一个MessageQueue。

Looper:MessageQueued的管理者,Looper.prepare() 创建该线程的Looper对象,用于接收消息;(这样该线程就有了自己的Looper对象和MessageQueue数据结构了)Looper.loop(); 让Looper开始工作,从消息队列里取消息,处理消息。Looper.myLooper()用于获得looper对象。

Message:消息对象

handler:消息处理者

 class MyThread extends Thread{
        public void run(){
            Looper.prepare(); //创建该线程的Looper对象
            //这里Looper.myLooper()获得的就是该线程的Looper对象了
            handler = new ThreadHandler(Looper.myLooper());
            Message msg = handler.obtainMessage(1,1,1,"我自己");
            handler.sendMessage(msg);
            Looper.loop(); 
        }
        //定义线程类中的消息处理类
        class ThreadHandler extends Handler{
            public ThreadHandler(Looper looper){
                super(looper);
            }
            public void handleMessage(Message msg){
                //这里对该线程中的MessageQueue中的Message进行处理
                //这里我们再返回给主线程一个消息
                //加入判断看看是不是该线程自己发的信息
                if(msg.what == 1 && msg.obj.equals("我自己")){
                    handler = new MyHandler(Looper.getMainLooper());
                    Message msg2 = handler.obtainMessage(1,1,1,"禀告主线程:我收到了自己发给自己的Message");
                    handler.sendMessage(msg2);                
                }
            }
        }
    }
}

Handler 的post方法:待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值