安卓中的handler消息传递机制

  出于系统性能优化考虑,安卓中的UI操作并不是线程安全的,如果有多个线程并发操作UI组件,则可能导致线程安全问题,这意味着如果有多个线程并发操作UI组件,则可能导致线程安全的问题,为了解决这个问题,安卓制定了一条简单的规则:只允许UI线程修改Activity里的组件

  当程序第一次启动时,安卓会同时启动主线程(MainThread)来处理和负责与UI有关的事件

Handler的特性

1Android里没有全局Message Queue消息队列,每个Activity主线程都有一个独立的Message Queue消息队列,消息队列采用先进先出原则。不同APK应用不能通过Handler进行Message通信,同一个APK应用中可以通过Handler对象传递而进行Message通信。

2)每个Handler实例都会绑定到创建它的线程中(一般位于主线程,即Activity线程),但是Handler实例可以在任意线程中创建(可以在主线程或子线程中创建)

3Handler发送消息使用Message Queue消息队列,每个Message发送到消息队列里面;发送消息采用异步方式,所以不会阻塞线程。而接收线程则采用同步方式,所以会阻塞线程,所以当Handler处理完一个Message对象后才会去取下一下消息进行处理。

你可能感兴趣的:(安卓中的handler消息传递机制)