OpenHarmony Sensor 模块Callback注册和回调全流程

临文乍了了,彻卷兀若无。这篇文章主要讲述OpenHarmony Sensor 模块Callback注册和回调全流程相关的知识,希望能为你提供帮助。
?service启动阶段的回调注册流程
service 启动:?

注册Service的回调函数 ZReportDataCallback()到Impl实现类中

【OpenHarmony Sensor 模块Callback注册和回调全流程】注册实现类Impl的回调函数SensorDataCallback()到驱动层


驱动层代码:




On()订阅流程中,应用从JS到Clent端的回调注册流程

细节图:





从上面client端的回调注册, 和 service端的回调注册都分别实现。
只需要将service 和 client 串联起来即可。
service 是如何触发 client端的回调的?

答案是通过socket发送消息。触发listener的OnReadable()
在client端有个线程负责receive socket消息,
在service端有个线程负责send socket消息。
平时,service端的发送线程是处于阻塞状态。 当驱动触发了service的回调函数SensorServiceImpl::SensorDataCallback()时,SensorServiceImpl::SensorDataCallback()又会回调上一层的回调函数ZReportDataCallback()。
下面的图时注册过程,回调过程需要将箭头反向看即可。

SensorServiceImpl::SensorDataCallback()的实现:

消息发送线程:

经过多层调用:

当client端监听到有消息过来,就触发OnReadable。

接者反向往上回调,就完成了从驱动,到service,到client,到Js层的回调了。
驱动---回调方式---> service---socket方式---> client----回调方式---> JS



    推荐阅读