参考资料

1.相关基础知识:触发器Emitter
2.启动服务:ServiceAbility开发

开发步骤

第一步:开发界面,界面内容由一个按钮组件+文本组件构成,然后在按钮组件中添加点击事件,开启服务。代码如下:

import featureAbility from "@ohos.ability.featureAbility"
import emitter from '@ohos.events.emitter'; @Entry
@Component
struct 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")
}
}
}

第二步:新建服务类,在服务中完成数组计算,把值通过触发器传递至界面显示
一定要在config.json文件中,在module模块下配置触发器权限:

  "reqPermissions": [
{
"name": "ohos.permission.PUBLISH_AGENT_REMINDER"
}
],

然后编写服务类,通过触发器的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', '发成功');
}
};

运行结果

​欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

【HarmonyOS】【ArkUI】在Service中使用Emitter的更多相关文章

  1. 如何托管ASP.NET Core应用到Windows Service中

    (此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...

  2. Web Service 中返回DataSet结果大小改进

    http://www.cnblogs.com/scottckt/archive/2012/11/10/2764496.html Web Service 中返回DataSet结果方法: 1)直接返回Da ...

  3. 跟我学Windows Azure 四 Cloud Service中的WebRole与WorkRole,及他们之间的通信

    Cloud Service 中WebRole就相当与我们的WebSite,而WorkRole相当与我们在服务器上写了个Windows Service,站在高可用的角度上来讲,Cloud Service ...

  4. JAVA CDI 学习(5) - 如何向RESTFul Service中注入EJB实例

    RESTFul Service中如果要注入EJB实例,常规的@Inject将不起作用,在Jboss中,应用甚至都启动不起来(因为@Inject注入失败),解决方法很简单:将@Inject换成@EJB ...

  5. (原创)在service中定时执行网络操作的几点说明

    执行网络操作是耗时操作,即便是在service中也要放到子线程中执行 这里我用到了async-http-client框架来执行异步请求操作 计时用的java原生Timer和TimerTask类 本来这 ...

  6. Android在Service中显示Dialog

    在Service中弹出一个Dialog对话框 第1步:在应用的AndroidManifest.xml中需要添加权限.没有无法显示. <uses-permission android:name=& ...

  7. Service中事务不能回滚的解决方式(转)

    1.在service方法里面如果对异常进行了捕获的话,该事务是不会进行回滚的        默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚.          spr ...

  8. 在Web Service中傳送Dictionary

    有個需求,想在Web Service中傳遞Dictionary<string, string>參數,例如: 排版顯示純文字 [WebMethod] public Dictionary< ...

  9. Web Service 中返回DataSet结果的几种方法

    Web Service 中返回DataSet结果的几种方法: 1)直接返回DataSet对象    特点:通常组件化的处理机制,不加任何修饰及处理:    优点:代码精减.易于处理,小数据量处理较快: ...

随机推荐

  1. Html飞机大战(九): 使徒来袭 (设计敌机)

    好家伙,本篇介绍敌机 好了,按照惯例我们来理一下思路:   我们有一个敌机类,第一步当然是实例一个敌机对象, 然后我们把这个敌机放入我们的敌机群(敌机数组) 然后是熟悉的移动和绘制   那我们回顾一下 ...

  2. 第六十六篇:Vue的watch侦听器

    好家伙,哇吃侦听器 1.watch侦听器 watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作 1.1.侦听器的基本用法 <body> <div id=" ...

  3. 如何自动清理 KingbaseES SYS_LOG

    KingbaseES 初始化完成后,默认不会对 sys_log进行清理.如果需要对sys_log进行自动清理,需要设置相关参数. 与日志自动清理有关的参数(默认值)如下: log_filename | ...

  4. java的数据类型分为两大类

    java的数据类型分为两大类 基本类型(primitive type) 数据类型 整数类型 byte占一个字节范围:-128-127 short占两个字节范围:-32768-32767 int占四个字 ...

  5. 【设计模式】Java设计模式 - 外观模式

    Java设计模式 - 外观模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...

  6. vscode用户自定义代码中如何表示table空格

    "Print to phpfuntion": { "scope": "php", "prefix": "pfu ...

  7. Rust基本数据类型

    基本类型 Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型. 基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成: 数值类型: ...

  8. 最强cron解析器

    背景 大家有没有这么一种困境 我现在需要去配置一个定时任务:"每天早上九点执行任务" 若你有一个好的定时任务平台,相信很容易就能配置完成.那若是没有定时任务平台呢?是不是就要自己写 ...

  9. Logstash:在 Docker 中部署 Logstash

    文章转载自:https://elasticstack.blog.csdn.net/article/details/116516923 创建一个目录 docker-logstash.在该目录下,有如下的 ...

  10. 使用Filebeat传送多行日志

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106272704 在解决应用程序问题时,多行日志为开发人员提供了宝贵的信息. 堆栈跟踪 ...