使用方法
1.若在UI主线程中,则系统已经初始化了一个Looper对象(因为主线程也是一个消息循环,因此具有一个looper,主线程的所有工作都是由其looper完成的looper不断从消息队列中抓取消息,然后完成消息指定的任务),否则要自己创建一个looper对象并启动。我们无法通过构造器创建looper,而要调用looper的 prepare()方法,此方法保证每个线程都只有一个looper对象。
looper的构造器会创建与之配套的MessageQueue。
我的理解:
消息:Message类的一个实例,需要实现时定义的实例变量:
what:用户定义的int型消息代码
obj:随消息发送的用户指定的对象
target:处理消息的Handler
Message的目标是Handler类的一个实例,在创建时会自动与一个Handler相关联。
Handler:不仅是Message的目标,也是创建和发布Message的接口(Handler类包含发送、处理消息的方法。)
Looper:每个线程只能拥有一个Looper,它的loop方法负责读取MessageQueue中的消息并交给Handler,创建looper对象时会在它的构造器中创建MessageQueue对象 。Message必须在Looper上发布或读取,所以Handler总是引用着他,一个Handler仅与一个Looper相关联,一个Looper可与多个Handler相关联。
版权声明:本文为博主原创文章,未经博主允许不得转载。