回复
Ability子系统之数据观察者服务-dataobsmgr 原创
九重霄99
发布于 2022-3-2 14:23
浏览
2收藏
作者:纪春祥
概述
dataobsmgr全称为(data observer manager service)数据观察者管理业务。在操作系统中有些数据的变更,需要通知到其他模块,需要对相应数据和接口进行登记(源应用负责注册)、绑定(在数据发生变更的时候调用目标接口)。
HarmonyOS官网例子:
@Override
public void onStart(Intent intent) {
// ...
dataAbilityHelper = DataAbilityHelper.creator(this);
IDataAbilityObserver dataAbilityObserver = new IDataAbilityObserver() {
@Override
public void onChange() {
String timeFormat = SystemSettings.getValue(dataAbilityHelper, SystemSettings.Date.TIME_FORMAT);
setTimeFormat(timeFormat);
}
};
dataAbilityHelper.registerObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);
}
void setTimeFormat(String timeFormat) {
String timeStr = "12";
if (timeStr.equals(timeFormat)) {
// Display in 12-hour format
} else {
// Display in 24-hour format
}
}
代码结构
Proxy 是IPC客户端,Stub 是IPC服务端,Service 是服务端对象,Inner 是 Service 的内部逻辑。
IPC(Inter-Process Communication,进程间通信),之所以在dataobsmgr引入IPC,因为OpenHarmony是一个分布式系统,数据分布式、应用部署也是分布式。
基本流程时序图
1、DataObsMgrService作为系统服务,由OpenHarmony操作系统调用OnStart()和OnStop()完成启动和停止;
2、应用通过调用DataObjManagerStub的OnRemoteRequest方法完成DataObsManager的注册、注销和消息响应;
3、分别触发DataObsMgrInner的注册、注销和消息;
4、消息会触发IDataAbilityObserver的OnChange函数,即应用侧需要实现的函数。
int* DataObsMgrInner::HandleNotifyChange(*const* Uri *&**uri*)
{
HILOG_INFO("DataObsMgrInner::HandleNotifyChange called start");
std::lock_guard<std::mutex> *lock_l*(**innerMutex_**);
ObsListType *obslist*;
if (!GetObsListFromMap(*uri*, *obslist*)) {
AtomicSubTaskCount();
HILOG_INFO("DataObsMgrInner::HandleNotifyChange there is no obs in the uri.");
return NO_OBS_FOR_URI;
}
for (*auto* *obs* : *obslist*) {
if (*obs* != nullptr) {
*obs*->OnChange();
}
}
AtomicSubTaskCount();
HILOG_INFO("DataObsMgrInner::HandleNotifyChange called end %{public}zu", *obslist*.size());
return NO_ERROR;
}
遗留:
1、OnRemoteRequest如何被触发的?
2、客户端和服务端分别是如何触发的?
需要参见IPC相关机制,这里不做深究。
更多原创内容请关注:深开鸿技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
已于2022-3-4 16:55:09修改
赞
1
收藏 2
回复
相关推荐