基于鸿蒙系统的commonEvent和限制与约束原子化服务代码简析

简介: 基于鸿蒙系统的commonEvent和限制与约束原子化服务代码简析

@[toc]

commonEvent定义介绍

发布:发送公共事件,事件表示事件名称。
PublishAsUser:发送指定用户的公共事件。
CreateSubscriber:创建事件的订户。
订阅:订阅事件,可以是公共事件或自定义事件。
取消订阅:取消订阅事件。一旦取消,将不会接收后续事件。
@哦。commonEvent模块提供了一个简单的API。首先,创建一个订阅服务器来接收事件,然后开始订阅事件,最后取消订阅。要发布事件,可以直接调用publish()方法来发布事件。如果事件与订阅者订阅的事件类型匹配,则会将其回调给订阅者。简单步骤如下:

declare namespace commonEvent {
  function publish(event: string, callback: AsyncCallback<void>): void;
  function publish(event: string, options: CommonEventPublishData, callback: AsyncCallback<void>): void;
  function publishAsUser(event: string, userId: number, callback: AsyncCallback<void>): void;
  function publishAsUser(event: string, userId: number, options: CommonEventPublishData, callback: AsyncCallback<void>): void;
  function createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): void;
  function createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise<CommonEventSubscriber>;
  function subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void;
  function unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback<void>): void;
}

在这里插入图片描述

限制与约束

@ohos.reminderAgent 模块里提供了发布后台代理提醒和取消后台代理提醒的相关 API,部分 API 如下所示:

declare namespace reminderAgent {
  // 发送后台代理提醒
  function publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void;
  // 取消后台代理提醒
  function cancelReminder(reminderId: number, callback: AsyncCallback<void>): void;
  // 获取所有后台代理提醒
  function getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void;
  // 取消所有后台代理提醒
  function cancelAllReminders(callback: AsyncCallback<void>): void;
  
  // 省略部分API
  
}

发布提醒:发布后台代理提醒。ReminderRequest参数描述如下:
ReminderType:设置后台提醒类型,支持以下三种类型:
提醒_类型_计时器:倒计时提醒。使用此类型时,需要使用ReminderRequestTimer配置reminderReq参数。
提醒_类型_日历:日历提醒。使用此类型时,需要使用ReminderRequestCalendar配置reminderReq参数。
提醒_类型_警报:闹钟提醒。使用此类型时,reminderReq参数需要配置为ReminderRequestAlarm。
ActionButton:弹出提醒通知栏中显示的按钮(可选参数,支持0/1/2按钮)。
WantAgent:单击通知后要跳转到的目标功能信息。
maxScreenWantAgent:提醒目标包在到达时跳转。如果设备正在使用,则会弹出一个通知框。
RingDuration:表示振铃持续时间。
SnoozeTimes:表示延迟提醒的次数。
TimeInterval:执行延迟提醒间隔。
标题:表示警报标题。
内容:表示提醒内容。
ExpiredContent:表示提醒过期后要显示的内容。
snoozeContent:表示提醒延迟时要显示的内容。
NotificationId:表示提醒使用的通知的ID号。具有相同ID号的提醒将被覆盖。
插槽类型:表示提醒的插槽类型。
取消提醒:取消后台代理提醒。
GetValidReminders:获取当前应用程序设置的所有有效(未过期)提醒。
取消所有提醒:取消当前应用程序中的所有提醒。
在这里插入图片描述

private cancelAllTimer() {
  reminderAgent.cancelAllReminders((error, data) => {
    if(!error) {
      // 取消成功
    }
  })
}

思路如下:
专用startTimer(){
让计时器={
reminderType:reminderAgent.reminderType.REMINDER_TYPE_TIMER,
触发器时间(秒):10
}
提醒代理。publishReminder(计时器,(error,reminderId)=>{
如果(reminderId){
// 发送成功,如果需要取消该提醒,这要使用该提醒ID
}
})
}

原子化服务代码简析

创建原子化服务项目后,系统将默认在条目的js目录和FormAbility目录中生成页面模板和服务管理。页面模板是标准的原子化卡片布局,页面表示页面集,索引表示特定模块。服务管理为服务状态更改提供回调,其中可以更新卡数据。

<div class="container">
    <stack>                                                  // 堆叠式布局
        <div class="container-img">
            <image src="/common/widget.png" class="bg-img"/> // 设备卡片背景
        </div>
        <div class="container-inner">
            <text class="title">                             // 设置标题
                {{ $t('strings.title_immersive') }}
            </text>
            <text class="detail_text" onclick="routerEvent"> // 设备内容,点击时触发routerEvent事件
                {{ $t('strings.detail_immersive') }}
            </text>
        </div>
    </stack>
</div>

class 为 "detail_text" 的 text 组件添加了 onclick 事件,当点击该组件时触发 routerEvent 的事件回调。routerEvent 在 index.json 文件中配置,布局代码演示效果如下:在这里插入图片描述

Canvas

ArkUI开发框架提供了Canvas Canvas组件,以支持我们对自绘各种图形的需求。Canvas特定绘图委托CanvasRenderingContext2D执行。CanvasRenderingContext2D提供了一系列与绘画相关的方法。作者简单地将CanvasRenderingContext2D理解为画笔,画笔绘制的内容显示在Canvas画布上。本课程主要介绍CanvasRenderingContext2D的使用。

interface CanvasInterface {
  (context?: CanvasRenderingContext2D): CanvasAttribute;
}

上下文:创建Canvas组件时,需要一个CanvasRenderingContext2D实例,该实例负责在Canvas上绘制特定内容,如文本、图片和各种形状。

@Entry @Component struct Index {

  // 初始化RenderingContextSettings并设置为抗锯齿
  private setting: RenderingContextSettings = new RenderingContextSettings(true);
  // 初始化CanvasRenderingContext2D
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.setting);

  build() {
    Column() {
      Canvas(this.context)                        // 设置Canvas所需要的context
        .size({width: '100%', height: "100%"})    // 设置Canvas的宽高
        .onReady(() => {                          // 监听回调,在回调内执行绘画操作
          this.context.fillRect(10, 10, 130, 40); // 以(10, 10)为起点坐标,画矩形,默认黑色
        })
    }
    .width('100%')
    .height('100%')
  }
}
相关文章
|
5月前
|
定位技术 开发工具
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
274 5
【HarmonyOS】鸿蒙应用实现调用系统地图导航或路径规划
|
6月前
|
Linux 编译器 Android开发
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
316 1
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
|
5月前
|
安全 开发工具 数据安全/隐私保护
HarmonyOS应用安全全攻略:从系统到代码的全面防护
本文全面解析HarmonyOS应用安全开发,涵盖系统到代码的防护策略。首先介绍HarmonyOS三层安全体系:系统安全层、开发工具层与应用生态层。接着详解设备与数据安全等级划分,提供分级加密实战代码,包括文件读写与HUKS高级加密案例。最后总结开发最佳实践,强调数据分类、最小权限、加密常态及传输安全保障,助你构建更安全的应用。保护用户数据不仅是功能需求,更是开发者责任!
480 0
|
3月前
|
移动开发 网络协议 小程序
鸿蒙NEXT即时通讯/IM系统RinbowTalk v2.4版发布,基于MobileIMSDK框架、ArkTS编写
RainbowTalk是一套基于开源即时通讯讯IM框架 MobileIMSDK 的产品级鸿蒙NEXT端IM系统。纯ArkTS编写、全新开发,没有套壳、也没走捷径,每一行代码都够“纯血”。与姊妹产品RainbowChat和RainbowChat-Web 技术同源,历经考验。
187 1
|
4月前
|
缓存 移动开发 网络协议
纯血鸿蒙NEXT即时通讯/IM系统:RinbowTalk正式发布,全源码、纯ArkTS编写
RainbowTalk是一套基于MobileIMSDK的产品级鸿蒙NEXT端IM系统,目前已正式发布。纯ArkTS、从零编写,无套壳、没走捷径,每一行代码都够“纯”(详见:《RainbowTalk详细介绍》)。 MobileIMSDK是一整套开源IM即时通讯框架,历经10年,超轻量级、高度提炼,一套API优雅支持 UDP 、TCP 、WebSocket 三种协议,支持 iOS、Android、H5、标准Java、小程序、Uniapp、鸿蒙NEXT,服务端基于Netty编写。
295 1
|
6月前
|
人工智能 运维 监控
HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践
本书《HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践》深入探讨了鸿蒙系统的运维管理。从架构特点到实际操作,涵盖分布式能力、性能优化、安全维护及故障排查。内容包括设备管理、系统监控、安全管理等核心任务,提供常见问题解决方案与工具推荐。面对未来超级终端和AI赋能的挑战,运维人员需不断学习,以充分发挥鸿蒙的分布式优势,为用户带来流畅体验。
461 8
|
5月前
|
开发工具 数据安全/隐私保护 开发者
打造鸿蒙系统中最好用的加载动画和提示弹窗
幽蓝君开发了鸿蒙平台的轻量级弹窗工具 yloadinghud,旨在实现简洁优雅的提示交互。无需在每个页面重复初始化,只需一行代码即可展示加载动画或提示弹窗。支持多种类型,如成功、失败提示及文字弹窗,且具备自动消失功能,使用便捷。项目已上传至 ohpm 仓库,欢迎搜索体验并提出宝贵建议。#三方SDK #工具效率
|
6月前
|
JavaScript 前端开发 Java
HarmonyOS NEXT~鸿蒙系统下的Cordova框架应用开发指南
《HarmonyOS NEXT:鸿蒙系统下的Cordova框架应用开发指南》详细介绍如何将Cordova应用适配到鸿蒙系统。文章涵盖兼容性分析、环境配置、特性适配、性能优化及发布调试等内容。尽管Cordova官方暂无直接支持,但通过Cordova-Android平台与定制插件可实现功能扩展。开发者需注意性能差异,并借助插件机制融入鸿蒙特色功能,如服务卡片和分布式能力。未来,随着鸿蒙生态完善,Cordova在该平台的应用将更加广泛且高效。
501 1
|
6月前
|
移动开发 Java 测试技术
HarmonyOS NEXT~鸿蒙系统与mPaaS三方框架集成指南
本文详细介绍了鸿蒙系统(HarmonyOS)与mPaaS框架的集成方法。鸿蒙系统作为华为开发的分布式操作系统,具备分布式架构、微内核设计等特性;mPaaS是蚂蚁金服推出的移动开发平台,提供金融级组件和全生命周期管理能力。文章从环境准备、核心功能集成(如初始化、用户认证、支付功能)、适配问题解决到调试测试及最佳实践,全方位指导开发者高效集成两者。通过遵循指南,可充分利用鸿蒙的特性和mPaaS的金融能力,构建高性能、高安全性的应用,同时避免常见兼容性问题,缩短开发周期。
343 0
|
6月前
|
开发框架 API 开发工具
HarmonyOS NEXT~鸿蒙系统与Uniapp跨平台开发实践指南
本书《HarmonyOS NEXT~鸿蒙系统与Uniapp跨平台开发实践指南》深入探讨了华为鸿蒙系统(HarmonyOS)与Uniapp框架的融合应用。书中首先介绍了鸿蒙系统的分布式架构特点及其原子化服务理念,随后详细讲解了Uniapp在鸿蒙环境下的适配方案,包括开发环境配置、特有配置项设置以及条件编译调用鸿蒙原生能力的方法。此外,还提供了界面适配策略、性能优化建议及调试发布流程,帮助开发者高效构建多端协同应用。最后展望了鸿蒙生态未来的发展方向,如ArkUI-X的深度集成和全新API能力的应用前景。
618 0