MessageQueue, Looper, Thread, Handler, Message, Messenger

来源:互联网 发布:java同名包类加载顺序 编辑:程序博客网 时间:2024/06/07 12:33

1.

除mainThread,新创建的线程读没有looper,使用Looper.prepare()创建,同时也创建了MessageQueue

Handler关联于looper,使用Handler的消息发送接口发送消息到关联的Looper的MessageQueue,底层

发送消息的接口是MessageQueue.IdleHandler     可以通过Looper获得    MessageQueue 在设置此接口。

使用Looper.loop()   进行消息的处理。


Message关联与一个Handler,通过此Handler发送到相应的线程的MessageQueue并在那个线程执行。执行的

处理函数为个关联的Handler


Handler也可以发送Runnable到关联的线程。

Handler可以制定消息处理的延时

Handler既是一个发送消息的接口,也是一个处理消息的实体。


Handler 接口:

1。 Create Message

hasMessages(int what)

Check if there are any pending posts of messages with code 'what' in the message queue.
2。 Post Runnable

 postxxx

3。 Send Message

sendXXX

4。删除发送的,但未处理的runnable和message


Messenger实现了在client和service之间传递Message的IBind接口,但是Message中传递的对象有

所要求。

客户在connect service时获得一个Messenger,通过此Messenger发送消息,服务器处理消息。

客户可以把本地的Messenger放在Message中发送给服你务器,服务器可以用此Messenger发送

消息会客户端。参见service的reference



0 0