什么是服务卡片与元服务

服务卡片是能放到桌面的轻量界面小窗,用户不用打开应用就能看到信息、点一下直达功能。元服务(原子化服务)则是免安装、即点即用的鸿蒙应用形态,常和服务卡片配套——卡片是入口,点进去是元服务。

服务卡片的价值:把高频信息直接摆在桌面上,缩短用户触达功能的路径。

这篇从概念到实战,把卡片开发走一遍。

卡片和原子化服务的关系

一个常规应用可以带多张服务卡片;一个元服务本身也可以配卡片作为桌面入口。卡片运行在独立的卡片容器里,资源受限、生命周期短,不能像完整页面那样常驻。把卡片当"展示加跳转"的轻前端,重逻辑仍放主应用或元服务里。

卡片适合做什么
  • 信息展示天气、待办、步数一眼可见。
  • 快捷入口点一下直达某个功能页。
  • 状态同步定时刷新最新数据。

卡片的生命周期

卡片有自己的生命周期:创建(onCreateForm)、刷新(onUpdateForm)、销毁(onDestroyForm)。用户把卡片拖到桌面触发创建,需要更新时触发刷新,移除时销毁。它不是页面,不要在里面跑长任务。

onUpdateForm: (id) => {
  this.cardId = id
  this.refresh()
}

用 ArkTS 写一个卡片

卡片用 ArkTS 的声明式布局写,但组件集比主界面精简。卡片页面定义在 Form 目录下,配合卡片配置 JSON 声明尺寸、预览图。一个最基本的卡片就是 Text 加一行状态。

@Entry
@Component
struct CardView {
  @State msg: string = "今日 3 项待办"
  build() {
    Column() { Text(this.msg).fontSize(14) }
    .width("100%").height("100%").padding(12)
  }
}

卡片刷新与数据更新

卡片不能一直跑,靠系统定时或事件触发刷新。调用更新接口把新数据推给卡片,界面就重画。刷新频率要克制——太频繁耗电,太慢信息陈旧。常用:进入前台时刷一次,或按小时定时。

鸿蒙服务卡片示意:一部抽象手机屏幕上悬浮多张圆角小卡片,卡片间以发光光带双向连接,右上一朵云
桌面入口:多张卡片悬浮于手机,彼此联动。