Hanlder Looper MessageQueue Message

Handler:处理消息

Message:消息

MessageQueue:消息队列

Looper:MessageQueue的管理者

 

MessageQueue:

  消息队列。以先进先出的原则存放多个Message.MessageQueue是通过Handler进行管理,通过Looper.Prepare()创建Looper的同时会自动创建MessageQueue对象.UI主线程默认会创建Looper,其他线程需要手动创建.通过Looper. Prepare()和Looper. Looper.loop(),对MessageQueue进行循环处理。

 

Message:

  消息对象。new Message().obtain()得到Message,如果Message Pool中已经有Message对象则总Pool获取,没有则创建一个新的Message对象。也可以同过new Message()创建一个新的对象。

 

Looper:

  Looper是MessageQueue的管理者,创建Looper对象就会创建MessageQueue,MessageQueu脱离不了Looper.除了UI主线程会创建一个默认的Looper,其他线程都要通过Looper.prepare()方法创建。Looper遵循先进先出的原则,循环从MessageQueue中读取Message。

  Looper从MessageQueue中取出消息后交给Handler().handleMessage(msg)处理,处理完成调用Message().recycle() 放入到Message Pool中.

 

Handler:

  负责处理消息。Handler将消息封装成Message,通过new Message().obtainMessage()创建一个Message,也可以通过Message message = new Message()创建消息。Handler().obtainMessage()方法如果Message Pool中已经有Message对象,则直接调用该对象,不用每次创建一个对象

。将消息传递给Looper,调用Handler().sendMessage(msg)时,Looper将Message加入到MessageQueue.继而Looper通过广播的形式将消息发送出去,Hanlder通过Handler().obtainMessage()方法接受到消息,做相应处理.

你可能感兴趣的:(messagequeue)