重新整理一下Handler原理(温故而知新,可以为师矣)

说Handler之前,先把和Handler有关的几个组件也说一下

 Message:handler发送和处理的消息

 Looper :每个线程只有一个looper,是个死循环,loop方法负责从MessageQueue 中拿取数据,然后把数据交给发送消息的Handler进行处理。

 MessageQueue:消息队列,遵循先进先出的原则。创建looper对象的时候,会在它的构造器中创建一个MessageQueue,用来管理Message。

 Handler :两大作用发送消息和处理消息,Handler将消息发送给指定的MessageQueue,也就是说,想要Handler正常使用,必须在当前线程有MessageQueue,而MessageQueue是通过Looper管理的。也就是说要正常使用Handler必须要有Looper对象,为了保证有Looper基本上分两种方式

 

 主线程中:系统已经初始化了一个Looper对象,所以可以直接创建Handler发送和处理消息就行了。

 子线程中:必须自己创建一个looper对象,启动后,looper会进入死循环不断从MessageQueue中区消息分发给对应的Handler进行处理。

你可能感兴趣的:(android)