临文乍了了,彻卷兀若无。这篇文章主要讲述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
推荐阅读
- 邮件在Exchange中的路由过程
- OpenHarmony-UI框架适配层浅析
- 关系型数据库与非关系型数据库概述,Redis简介常用命令及优化
- PowerShell 博文目录
- 分分钟理解原型模式
- |NO.Z.00025|——————————|LinuxBasicEnd|——|Linux&软件包安装.V04|
- |NO.Z.00000|——————————|LinuxBasicEnd|
- |NO.Z.00029|——————————|^^部署^^|——|Linux&软件包安装.V08|——|脚本安装|webmin|web图形化|系统管理|
- |NO.Z.00006|——————————|^^构建^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V2|