Android线程间通信是通过Handler来实现的,Harmony则是通过EventHandler。
1、Android线程间通信机制
首先,looper、handler、messagequeue三者共同实现了android系统里线程间通信机制。如在A、B两个子线程之间需要传递消息,首先给每个子线程绑定一套handler、looper、messagequeue机制,然后这三个对象都与其所属线程对应。然后A线程通过调用B线程的Handler对象,发送消息。这个消息会被Handler发送到B线程的messagequeue中,而属于B线程的Looper对象一直在for循环里无限遍历MessageQueue, 一旦发现该消息队列里收到了新的消息,就会去对消息进行处理,处理过程中会回调自身Handler的heandleMessage方法。从而实现了不同线程间通信。
2、HarmonyOS线程间通信示例
(1) 创建EventHandler对象。
private EventHandler eventHandler = new EventHandler(EventRunner.getMainEventRunner()){
@Override
protected void processEvent(InnerEvent event) {
super.processEvent(event);
}
};
(2)发送事件。
eventHandler.sendEvent(1);//发送空消息事件
可以发送空消息事件,延迟事件,同步事件,定时事件等