Android的通信分为线程间通信,和进程间通信。
关于Handler要理解的几个问题:
1,Looper是一个死循环,为何不会导致界面卡死?
参考文献:Looper无限循环为什么没有卡死主界面
可以肯定的是,主线程可能阻塞,但不会卡死,基于以下两个方面:
一是Looper阻塞时会释放cpu等资源,不会占用大量资源;
二是Android是基于消息的系统,界面刷新都是通过系统发送消息,主线程读取消息完成的,所以消息是源源不断的;
2,Handler实现线程间通信的关键步骤是什么?
Handler通信机制基于ThreadLocal,Looper,MessageQueue,Message
通过ThreadLocal,将Handler和Looper与创建Handler的线程绑定,handler发送消息时,会发送到创建Handler的线程特有的消息队列中,只有该线程中的Looper才能消费这些消息,这样就完成了线程切换,即handler在一个线程发送消息,而在创建handler的线程中消费消息。
线程间通信基于Handler进行,进程间通信基于Bindler。