目录
简介
网上有很多关于 EventBus 源码分析的文章, 但很少有 EventBus 和 Handler 消息机制对比的文章,那 EventBus 能否替代 Handler 消息机制那?
一、 Handler消息机制
由于 Android 应用启动的时候会创建一条主线程(也叫 UI 线程), 应用默认运行在主线程中, 在主线程里不可做耗时操作,不然很容易造成 ANR ,同时 UI 操作只能在 主线程里操作 (子线程不可操作 UI), 引入了 Handler 消息机制来解决这个复杂的问题, 当需要做耗时操作时需要另起一线程, 当需要做UI的操作时, 必要在主线程里操作; Handler 内部类一般创建在主线程, 通过消息对象与子线程间通信, 而消息对象持有 Handler 对象引用, 从而通过回调 Handler 对象里重写的 handlerMessage 方法刷新UI界面, 达到线程间通信的目的; 消息对象持有 Handler 对象, 并通过引用回调 handlerMessage, 从而可以在主线程中操作 UI ;
优点和缺点:
由于消息对象持有 Handler 引用,造成了消息通信双方的高耦合; 同时不雅的使用Handler容易造成内存泄漏(Handler 是匿名内部类,持有外部类的引用),但是 Handler 机制最大的好处是发生问题时, 可以快速明确的定位、 理清每一条信息流的逻辑;