深圳农产品网站制作,建设网站是公司资产,网站设计好后如何发布,洛阳建筑公司排名进程模型概述
HarmonyOS的进程模型#xff1a;
应用中#xff08;同一包名#xff09;的所有UIAbility运行在同一个独立进程中。WebView拥有独立的渲染进程。
基于HarmonyOS的进程模型#xff0c;系统提供了公共事件机制用于一对多的通信场景#xff0c;公共事件发布者…进程模型概述
HarmonyOS的进程模型
应用中同一包名的所有UIAbility运行在同一个独立进程中。WebView拥有独立的渲染进程。
基于HarmonyOS的进程模型系统提供了公共事件机制用于一对多的通信场景公共事件发布者可能存在多个订阅者同时接收事件。
公共事件简介
HarmonyOS通过CESCommon Event Service公共事件服务为应用程序提供订阅、发布、退订公共事件的能力。
公共事件从系统角度可分为系统公共事件和自定义公共事件。
系统公共事件CES内部定义的公共事件只有系统应用和系统服务才能发布例如HAP安装更新卸载等公共事件。目前支持的系统公共事件详见系统公共事件列表。自定义公共事件应用自定义一些公共事件用来实现跨进程的事件通信能力。
公共事件按发送方式可分为无序公共事件、有序公共事件和粘性公共事件。
无序公共事件CES转发公共事件时不考虑订阅者是否接收到且订阅者接收到的顺序与其订阅顺序无关。有序公共事件CES转发公共事件时根据订阅者设置的优先级等级优先将公共事件发送给优先级较高的订阅者等待其成功接收该公共事件之后再将事件发送给优先级较低的订阅者。如果有多个订阅者具有相同的优先级则他们将随机接收到公共事件。粘性公共事件能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。普通的公共事件只能在订阅后发送才能收到而粘性公共事件的特殊性就是可以先发送后订阅。发送粘性事件必须是系统应用或系统服务且需要申请ohos.permission.COMMONEVENT_STICKY权限配置方式请参阅访问控制授权申请指导。
每个应用都可以按需订阅公共事件订阅成功当公共事件发布时系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。
图1 公共事件示意图 公共事件发布
场景介绍
当需要发布某个自定义公共事件时可以通过publish()方法发布事件。发布的公共事件可以携带数据供订阅者解析并进行下一步处理。
注意
已发出的粘性公共事件后来订阅者也可以接收到其他公共事件都需要先订阅再接收订阅参考公共事件订阅章节。
接口说明
详细接口见接口文档。
接口名接口描述publish(event: string, callback: AsyncCallback)发布公共事件。publish(event: string, options: CommonEventPublishData, callback: AsyncCallback)指定发布信息并发布公共事件。
发布不携带信息的公共事件
不携带信息的公共事件只能发布无序公共事件。 导入CommonEvent模块。 import commonEvent from ohos.commonEventManager;传入需要发布的事件名称和回调函数发布事件。 // 发布公共事件
commonEvent.publish(usual.event.SCREEN_OFF, (err) {if (err) {console.error([CommonEvent] PublishCallBack err${JSON.stringify(err)});} else {console.info([CommonEvent] Publish success);}
})发布携带信息的公共事件
携带信息的公共事件可以发布为无序公共事件、有序公共事件和粘性事件可以通过参数CommonEventPublishData的isOrdered、isSticky的字段进行设置。 导入CommonEvent模块。 import commonEvent from ohos.commonEventManager;传入需要发布的事件名称和回调函数发布事件。 // 公共事件相关信息
let options {code: 1, // 公共事件的初始代码data: initial data, // 公共事件的初始数据
}传入需要发布的事件名称、需要发布的指定信息和回调函数发布事件。 // 发布公共事件
commonEvent.publish(usual.event.SCREEN_OFF, options, (err) {if (err) {console.error([CommonEvent] PublishCallBack err JSON.stringify(err));} else {console.info([CommonEvent] Publish success)}
})