基于鸿蒙系统的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%')
  }
}
相关文章
|
1月前
|
JavaScript API 数据处理
基于HarmonyOS 5.0 (Next)技术的渐变模糊效果技术实现【代码实战】
本文详细介绍如何在HarmonyOS 5.0(Next)中实现渐变模糊效果,涵盖从基础页面搭建到添加模糊、渐变效果的全过程,并通过代码实战展示具体操作步骤。文章首先介绍了使用`Stack`和`Image`控件设置背景并应用`foregroundBlurStyle`属性实现模糊效果,接着通过`linearGradient`属性融入渐变效果,使界面更加精致美观。此外,还展示了如何利用滑动条和手势等交互元素动态调整模糊与渐变效果,增强用户体验。最后,通过具体代码示例说明如何为图片、弹窗等控件添加渐变模糊效果,突显HarmonyOS的强大功能与灵活性。
101 17
|
19天前
|
UED
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。
56 13
|
25天前
|
Android开发 iOS开发 API
鸿蒙开发:适配系统深浅色模式
无论是Android还是iOS,在系统设置中,都有着深色和浅色两种外观模式,同样,鸿蒙系统中也存在这样的外观切换,如何让自己的应用,跟随着系统的模式进行动态切换呢?目前系统给我们提供了两种方式可以实现,一种是资源形式,一种是动态的代码形式。
73 15
鸿蒙开发:适配系统深浅色模式
|
23天前
|
索引 API
鸿蒙开发:自定义一个股票代码选择键盘
金融类的软件,特别是股票基金类的应用,在查找股票的时候,都会有一个区别于正常键盘的键盘,也就是股票代码键盘,和普通键盘的区别就是,除了常见的数字之外,也有一些常见的股票代码前缀按钮,方便在查找股票的时候,更加方便的进行检索。
鸿蒙开发:自定义一个股票代码选择键盘
|
1月前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
147 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
27天前
|
安全 API 数据安全/隐私保护
自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统
在完成HarmonyOS Camera API开发后,我深入研究了数字版权管理(DRM)技术。最新DRM API 13提供了强大的工具,用于保护数字内容的安全传输和使用。通过学习该API的核心功能,如获取许可证、解密内容和管理权限,我实现了一个简单的数字视频保护系统。该系统包括初始化DRM模块、获取许可证、解密视频并播放。此外,我还配置了开发环境并实现了界面布局。未来,随着数字版权保护需求的增加,DRM技术将更加重要。如果你对这一领域感兴趣,欢迎一起探索和进步。
85 18
|
2月前
|
JavaScript 前端开发 物联网
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
本篇将介绍鸿蒙操作系统(HarmonyOS)的基本概念以及在 Mac 环境下进行鸿蒙开发所需的工具。通过了解鸿蒙系统和开发工具的特点,为后续的学习和实践奠定基础。
203 1
「Mac畅玩鸿蒙与硬件1」鸿蒙开发环境配置篇1 - 认识鸿蒙系统与开发工具
|
2月前
|
传感器 数据处理 数据库
鸿蒙开发Hvigor插件动态生成代码
【11月更文挑战第13天】Hvigor 是鸿蒙开发中的构建系统插件,主要负责项目的构建、打包及依赖管理,并能根据预定义规则动态生成代码,如数据库访问、网络请求等,提高开发效率和代码一致性。适用于大型项目初始化和组件化开发。
|
2月前
|
UED 开发者 容器
鸿蒙next版开发:ArkTS组件通用属性(布局约束)
在HarmonyOS next中,ArkTS提供了一系列通用属性来设置组件的布局约束,使开发者能够灵活控制组件的布局行为。本文详细解读了这些属性,包括`space`、`justifyContent`、`alignItems`、`layoutWeight`、`matchParent`和`wrapContent`,并通过示例代码展示了它们的使用方法。这些属性有助于实现响应式布局、动态界面调整和提升用户体验。
109 5
|
2月前
鸿蒙原生开发手记:02-服务卡片开发
服务卡片是桌面小组件,分为静态和动态两类。本文介绍如何在 DevEco 中创建静态服务卡片,并实现点击事件传参和参数接收。创建时需选择支持的卡片大小,使用 FormLink 实现跳转,参数在 `entryability` 的生命周期方法中接收。注意:服务卡片不支持热重载。
90 0
鸿蒙原生开发手记:02-服务卡片开发

热门文章

最新文章