当前位置: 首页 > news >正文

HarmonyOS ArkTS卡片开发:多种方式实现卡片信息刷新

在移动应用生态中,卡片作为重要信息的快捷展示形式,极大地提升了用户体验。HarmonyOS的ArkTS卡片开发为开发者提供了强大的工具,本文将基于CardInfoRefresh示例项目,深入解析ArkTS卡片开发的核心原理与实践。

1. ArkTS卡片概述与优势

ArkTS卡片是HarmonyOS中一种创新的界面展示形式,它允许应用将重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。与传统的JS卡片相比,ArkTS卡片带来了显著的优势:

统一开发范式:ArkTS卡片统一了卡片和页面的开发范式,页面的布局可以直接复用到卡片布局中,这大大提升了开发体验和开发效率。

增强的功能特性:ArkTS卡片新增了动效能力和自定义绘制能力,开放了Canvas画布组件,使卡片能够构建更多样的显示和交互效果。

逻辑代码执行:最重要的是,ArkTS卡片允许在卡片中运行逻辑代码,这意味着很多业务逻辑可以在卡片内部自闭环,极大地拓宽了卡片的业务适用场景。

2. ArkTS卡片运行机制

理解ArkTS卡片的运行机制对于开发至关重要。ArkTS卡片的架构包含四个核心角色:

  • 卡片提供方:提供卡片显示内容的应用,控制卡片的显示内容、控件布局以及控件点击事件。
  • 卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。
  • 卡片管理服务:用于管理系统中所添加卡片的常驻代理服务,提供formProvider和formHost的接口能力。
  • 卡片渲染服务:用于管理卡片渲染实例,运行卡片页面代码进行渲染。

与静态卡片相比,ArkTS卡片的核心区别在于渲染机制:卡片渲染服务将卡片内容渲染完毕后,卡片使用方会使用渲染数据,且卡片渲染服务中的卡片实例能够保持运行状态,支持动态更新。

3. 卡片刷新方式实战解析

CardInfoRefresh示例项目展示了四种主要的卡片信息刷新方式,每种方式都有其适用场景。

3.1 工程结构概览

在深入代码之前,先了解项目结构:

├──entry/src/main/ets/
│  ├──common/
│  │  ├──CommonConstants.ets              // 卡片数据常量
│  │  └──CommonData.ets                   // 卡片数据工具类
│  ├──entryability/
│  │  └──EntryAbility.ets                 // 程序入口类
│  ├──entryformability/
│  │  └──EntryFormAbility.ets             // 卡片生命周期类
│  ├──pages/
│  │  └──Index.ets                        // 首页
│  └──widget/
│     ├──pages/
│     │  └──WidgetCard.ets                // 卡片页面
│     ├──view/
│     │  └──CardListComponent.ets
│     └──viewmodel/
│        └──CardListParameter.ets
└──entry/src/main/resources/              // 应用静态资源目录

3.2 Router事件刷新

Router事件刷新通过应用路由切换触发卡片更新,当用户从卡片进入应用再返回桌面时,卡片信息会自动刷新。

实现原理

  1. 在EntryAbility的生命周期回调中触发更新方法
  2. 使用formProvider的updateForm方法将内容更新到指定卡片

核心代码

// EntryAbility.ets
onWindowStageCreate(windowStage: Window.WindowStage): void {// 初始化代码...// 监听应用生命周期,在应用返回后台时触发卡片更新this.updateFormData();
}private updateFormData(): void {const formProvider = formBindingData.createFormBindingData(formData);formProvider.updateForm(formId, formProvider).then(() => {console.info('FormProvider updateForm success');}).catch((err) => {console.error('FormProvider updateForm failed: ' + err);});
}

3.3 Call事件刷新

Call事件刷新提供了更实时的更新机制,通过在卡片添加时建立通信连接来实现即时更新。

实现原理

  1. 在EntryFormAbility的onAddForm中更新卡片信息
  2. 触发卡片UI的onFormTimeChange方法
  3. 通过postCardAction方法携带的updateCardInfo信息触发EntryAbility中的callee监听

核心代码

// EntryFormAbility.ets
onAddForm(want: Want): formBindingData.FormBindingData {// 创建卡片数据...let formData: formBindingData.FormBindingData = {};// 设置定时更新或即时更新this.scheduleUpdateForm(formId);return formData;
}// WidgetCard.ets
onFormTimeChange(): void {// 触发Call事件更新this.postCardAction({'action': 'updateCardInfo','params': {'cardInfo': this.getUpdatedCardInfo()}});
}

3.4 Message事件刷新

Message事件刷新适用于用户交互触发的更新,通过卡片内部事件直接触发刷新流程。

实现原理

  1. 在EntryFormAbility的onFormEvent回调中进行刷新处理
  2. 直接调用updateForm方法更新卡片内容

配置权限

{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
}

call事件需要提供方应用具备后台运行权限。

3.5 定点定时刷新

除了事件驱动更新外,ArkTS卡片还支持基于时间的自动刷新机制。

定点刷新
form_config.json中配置scheduledUpdateTime字段,卡片即可在指定时间自动刷新。

{"scheduledUpdateTime": "09:00","updateDuration": 1
}

定时刷新
通过配置updateDuration字段(单位分钟),设置卡片定时更新的时间间隔。

重要提示:如果同时配置了定时刷新和定点刷新,定点刷新会被忽略,因此需要根据业务需求选择合适的方式。

4. 完整开发流程

4.1 环境准备

  • 支持设备:华为手机
  • HarmonyOS系统:HarmonyOS NEXT Developer Beta5及以上
  • DevEco Studio版本:DevEco Studio NEXT Developer Beta5及以上
  • HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta5 SDK及以上

4.2 卡片创建步骤

  1. 定义卡片布局:在widget/pages/WidgetCard.ets中创建卡片UI布局
  2. 配置卡片信息:在src/main/resources/base/profile/form_config.json中配置卡片属性:
{"name": "WidgetCard","description": "示例卡片","src": "./widget/pages/WidgetCard","window": {"designWidth": 720,"autoDesignWidth": true},"colorMode": "auto","isDefault": true,"updateEnabled": true,"scheduledUpdateTime": "10:00","updateDuration": 0,"defaultDimension": "2*2","supportDimensions": ["2*2", "2*4"]
}
  1. 实现卡片生命周期:在EntryFormAbility中处理卡片的添加、删除和显示事件
  2. 实现刷新逻辑:根据业务需求选择合适的刷新方式并实现相应代码

5. 开发注意事项

在实际开发过程中,需要注意以下关键点:

能力约束

  • 仅支持导入标识"支持在ArkTS卡片中使用"的模块
  • 不支持导入共享包
  • 不支持使用native语言开发
  • 仅支持声明式范式的部分组件、事件、动效和数据管理能力

性能优化

  • 避免在卡片中执行复杂的计算任务
  • 合理设置更新频率,避免频繁更新影响设备续航
  • 对于静态内容,考虑使用定点刷新而非定时刷新

交互设计

  • 卡片事件处理和使用方的事件处理是独立的
  • 在使用方支持左右滑动的场景下,卡片内容不要使用左右滑动功能的组件,以防手势冲突

6. 总结

ArkTS卡片开发为HarmonyOS应用提供了强大的信息展示能力。通过CardInfoRefresh示例项目,我们掌握了router、call、message和定点刷新四种卡片更新方式,每种方式都有其适用场景:

  • Router事件:适合在应用与卡片间导航时更新
  • Call事件:适合需要实时通信的场景
  • Message事件:适合用户交互触发的更新
  • 定点/定时刷新:适合按固定时间节奏更新的内容

ArkTS卡片通过统一开发范式、增强的动效和自定义绘制能力,以及逻辑代码执行支持,极大地拓展了卡片的应用场景,为用户提供了更加丰富和便捷的服务直达体验。

随着HarmonyOS生态的不断发展,掌握ArkTS卡片开发将成为HarmonyOS开发者的重要技能。希望本文能为您的ArkTS卡片开发之旅提供有力的帮助!

附:鸿蒙学习资源直达链接

https://developer.huawei.com/consumer/cn/training/classDetail/cfbdfcd7c53f430b9cdb92545f4ca010?type=1?ha_source=hmosclass&ha_sourceId=89000248

http://www.jsqmd.com/news/39425/

相关文章:

  • 可视化图解算法68:数组中出现次数超过一半的数字
  • 2025年惠州线下媒体公司权威推荐榜单:楼宇视频广告/社区广告/社区媒体广告源头公司精选
  • 题解:P9052 [PA 2021] Areny
  • Copula函数的参数估计与拟合
  • 深度学习进阶(八)——AI 操作系统的雏形:AgentOS、Devin 与多智能体协作 - 实践
  • 服务保护
  • [电调]AM32电调调参系列 —— PWM Frequency参数分析
  • 【MySQL】数据库表的CURD(二) - 详解
  • 2025年国内自助入住系统公司排行榜:智能化酒店解决方案全面解析
  • 2025年国内自助入住系统公司TOP5权威推荐:智慧住宿新选择
  • 2025年11月安徽合肥最值得信赖的十大自助入住系统企业权威推荐
  • 基于AdaBoost算法的人脸检测原理与实现
  • 内蒙古太空菌酸奶厂家,厚乳老酸奶厂家排名,希腊酸奶公司排行榜,奶皮子糖葫芦生产厂家,干咽酸奶厂家,冷萃酸奶源头工厂,口碑推荐!
  • 把云南交给我:一名向导的专业承诺
  • vs一打开文件上传的页面, 即使不上传文件 然后关闭页面 vs就退出调试模式了
  • PG系列:并行创建索引
  • 透明液晶展示柜鞍山批发,实时报价享特价省成本
  • 2025年行业内专业的安检门源头厂商推荐榜单,演唱会安检门/行李安检门/工厂安检门/车站安检机实力厂家口碑推荐榜
  • OLIDWORKS 2025 SP5.0 多语言完整版 10 月更新,解锁三维机械设计新高度
  • 推荐4款内网穿透工具,轻松突破内网限制
  • 2025年不锈钢逆流闭式冷却塔定做厂家权威推荐榜单:密闭式冷水塔/印染废水用封闭式凉水塔/印染废水用闭式冷却塔源头厂家精选
  • bluetooth matlab GFSK 调制解调,误码率统计
  • without updating the macOS to figure out the Markdown import to Mac Note app
  • 统计学第二章
  • MATLAB 对于小目标检测,绘制roc曲线
  • 南通开合屏零售优惠价查询,享批发折扣与即时报价
  • B3758 [信息与未来 2021] 括号序列
  • 构建数据安全体系,数据分类分级是核心
  • 基于卷积神经网络的手写字体识别实现
  • 2025 年 11 月防静电地板厂家推荐排行榜,全钢/全钢陶瓷/硫酸钙/铝合金/pvc架空地板,OA网络地板,机房防静电地板,办公室架空地板公司精选