【HarmonyOS】【ArkUI】在Service中使用Emitter
参考资料
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的更多相关文章
- 如何托管ASP.NET Core应用到Windows Service中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
- Web Service 中返回DataSet结果大小改进
http://www.cnblogs.com/scottckt/archive/2012/11/10/2764496.html Web Service 中返回DataSet结果方法: 1)直接返回Da ...
- 跟我学Windows Azure 四 Cloud Service中的WebRole与WorkRole,及他们之间的通信
Cloud Service 中WebRole就相当与我们的WebSite,而WorkRole相当与我们在服务器上写了个Windows Service,站在高可用的角度上来讲,Cloud Service ...
- JAVA CDI 学习(5) - 如何向RESTFul Service中注入EJB实例
RESTFul Service中如果要注入EJB实例,常规的@Inject将不起作用,在Jboss中,应用甚至都启动不起来(因为@Inject注入失败),解决方法很简单:将@Inject换成@EJB ...
- (原创)在service中定时执行网络操作的几点说明
执行网络操作是耗时操作,即便是在service中也要放到子线程中执行 这里我用到了async-http-client框架来执行异步请求操作 计时用的java原生Timer和TimerTask类 本来这 ...
- Android在Service中显示Dialog
在Service中弹出一个Dialog对话框 第1步:在应用的AndroidManifest.xml中需要添加权限.没有无法显示. <uses-permission android:name=& ...
- Service中事务不能回滚的解决方式(转)
1.在service方法里面如果对异常进行了捕获的话,该事务是不会进行回滚的 默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚. spr ...
- 在Web Service中傳送Dictionary
有個需求,想在Web Service中傳遞Dictionary<string, string>參數,例如: 排版顯示純文字 [WebMethod] public Dictionary< ...
- Web Service 中返回DataSet结果的几种方法
Web Service 中返回DataSet结果的几种方法: 1)直接返回DataSet对象 特点:通常组件化的处理机制,不加任何修饰及处理: 优点:代码精减.易于处理,小数据量处理较快: ...
随机推荐
- Html飞机大战(九): 使徒来袭 (设计敌机)
好家伙,本篇介绍敌机 好了,按照惯例我们来理一下思路: 我们有一个敌机类,第一步当然是实例一个敌机对象, 然后我们把这个敌机放入我们的敌机群(敌机数组) 然后是熟悉的移动和绘制 那我们回顾一下 ...
- 第六十六篇:Vue的watch侦听器
好家伙,哇吃侦听器 1.watch侦听器 watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作 1.1.侦听器的基本用法 <body> <div id=" ...
- 如何自动清理 KingbaseES SYS_LOG
KingbaseES 初始化完成后,默认不会对 sys_log进行清理.如果需要对sys_log进行自动清理,需要设置相关参数. 与日志自动清理有关的参数(默认值)如下: log_filename | ...
- java的数据类型分为两大类
java的数据类型分为两大类 基本类型(primitive type) 数据类型 整数类型 byte占一个字节范围:-128-127 short占两个字节范围:-32768-32767 int占四个字 ...
- 【设计模式】Java设计模式 - 外观模式
Java设计模式 - 外观模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...
- vscode用户自定义代码中如何表示table空格
"Print to phpfuntion": { "scope": "php", "prefix": "pfu ...
- Rust基本数据类型
基本类型 Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型. 基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成: 数值类型: ...
- 最强cron解析器
背景 大家有没有这么一种困境 我现在需要去配置一个定时任务:"每天早上九点执行任务" 若你有一个好的定时任务平台,相信很容易就能配置完成.那若是没有定时任务平台呢?是不是就要自己写 ...
- Logstash:在 Docker 中部署 Logstash
文章转载自:https://elasticstack.blog.csdn.net/article/details/116516923 创建一个目录 docker-logstash.在该目录下,有如下的 ...
- 使用Filebeat传送多行日志
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106272704 在解决应用程序问题时,多行日志为开发人员提供了宝贵的信息. 堆栈跟踪 ...