每个程序员都知道,handler不管是在工作还是面试时候,都是经常用到或者被问到的,这里,我做了一些hanler的总结,希望对大家有用…
handler消息机制的原理: 在activity创建的时候, 主线程的ActivityMain 中会自动调用并创建一个looper 的对象,并在后台调用loop() 方法, 进行对消息队列 messageQue 的轮询查看, 如果子线程通过handler
发送一条消息, 那么looper 轮询器会从 messageque 中取出这条消息, 在主线程中执行,
new Message() , 和 Message.obtain() : 都是创建message 对象 , 一般用后者, 后者内部会判断 消息池中是否有消息对象, 有的话复用, 并且从消息池中移除,
handler 中的一些疑虑: Handler ,线程, looper, MessageQue 之间的关系是 N:1:1:1 可以有多个handler 对象来发消息, 那么looper 是如何分辨是哪一个handler 发来的消息,
这是因为hanler 在发消息的时候, 会把自身的引用以target 的形式放到message 中 , 那么looper 在轮询的时候, 会先取出target 判断是哪个handler 发来的消息
网友评论