参考资料
1.相关基础知识:触发器Emitter2.启动服务:ServiceAbility开发
开发步骤第一步:开发界面,界面内容由一个按钮组件+文本组件构成,然后在按钮组件中添加点击事件,开启服务 。代码如下:
import featureAbility from "@ohos.ability.featureAbility"import emitter from '@ohos.events.emitter';@Entry@Componentstruct Index { @State text: string = "" aboutToAppear() { var innerEvent = { eventId: 1002 } emitter.on(innerEvent, (eventData) => { let result = eventData.data.sum this.text = result console.log("计算的结果为:" + result) }) } aboutToDisappear(){ emitter.off(1002) } build() { Column() { Row() { Button("计算数组的和", { type: ButtonType.Normal }) } .width("100%") .justifyContent(FlexAlign.Center) .height("20%") .alignItems(VerticalAlign.Center) .backgroundColor("#d5d5d5") .onClick(() => { console.log("按钮被点击") featureAbility.startAbility({ want: { deviceId: "", bundleName: "com.zwc.myapplication", abilityName: "com.zwc.myapplication.ServiceAbility1", } }) }) Column() { Text("数组的和为:" + this.text) .fontSize(40) .fontColor(Color.Green) .width("100%") .textAlign(TextAlign.Center) } .width("100%") .height("80%") .backgroundColor("#FFCCaa") } }}
![【HarmonyOS】【ArkUI】在Service中使用Emitter](https://m.360buyimg.com/jdcms/jfs/t1/18068/36/20217/43/636e1326E68140bcd/73e24c55570802e3.gif)
文章插图
第二步:新建服务类,在服务中完成数组计算,把值通过触发器传递至界面显示一定要在config.json文件中,在module模块下配置触发器权限:
"reqPermissions": [ { "name": "ohos.permission.PUBLISH_AGENT_REMINDER" } ],
![【HarmonyOS】【ArkUI】在Service中使用Emitter](https://m.360buyimg.com/jdcms/jfs/t1/18068/36/20217/43/636e1326E68140bcd/73e24c55570802e3.gif)
文章插图
【【HarmonyOS】【ArkUI】在Service中使用Emitter】然后编写服务类,通过触发器的emmit方法把计算后的值发送至界面:emitter.emit(innerEvent, eventData)
import hilog from '@ohos.hilog';import emitter from '@ohos.events.emitter';export default { onCommand(want, startId) { hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.DEBUG); hilog.debug(0x0000, 'testTag', '%{public}s', 'ServiceAbility onCommand'); let myArrays: Array<number> = [10, 20, 30, 40, 50, 60] let sum: number = 0; for (let i = 0;i < myArrays.length; i++) { sum += myArrays[i] } hilog.debug(0x0000, 'testTag', '%{public}s', '数据的和是:' + sum); var innerEvent = { eventId: 1002 } var eventData = { data: { 'sum': sum }, priority: emitter.EventPriority.HIGH } hilog.debug(0x0000, 'testTag', '%{public}s', '发射器:' + JSON.stringify(eventData.data)); emitter.emit(innerEvent, eventData) hilog.debug(0x0000, 'testTag', '%{public}s', '发成功'); }};
推荐阅读
- vivox70pro+屏幕多大_vivox70pro+屏幕尺寸
- 一星期的小鸡怎么养(街上买的小鸡怎么养)
- 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序
- 【lwip】11-UDP协议&源码分析
- 【什么是妖股】妖股是什么意思
- .net 温故知新:【9】.NET日志记录 ILogger使用和原理
- 【k8s连载系列】2. k8s整体架构
- 安卓手机截屏模式怎么设置(手机截屏模式怎么设置)
- ubantu18.04@Intel 82545EM 【安装文档】TRex流量分析仪保姆级安装指南--基于VMware虚拟机
- 星之彼端丹铜事件该如何选择