Skip to content

原子化服务

鸿蒙原子化服务:免安装、即搜即用、跨设备流转。


1. 原子化服务概述

1.1 核心特性

| 特性 | 说明 | |---|-|-| | 免安装 | 无需安装,即搜即用 | | 即服务 | 轻量级服务形态 | | 跨设备 | 跨设备无缝流转 | | 服务发现 | 通过服务卡片/搜索发现 | | 元能力包 | 原子化服务的部署单元 |

1.2 与传统 App 对比

传统 App                    原子化服务
┌───────────┐              ┌───────────┐
│ 下载安装   │              │ 免安装     │
│ 独立 APK   │              │ 元能力包   │
│ 常驻设备   │              │ 即搜即用   │
│ 较重       │              │ 轻量       │
│ App Store  │              │ 服务搜索   │
└───────────┘              └───────────┘

2. 原子化服务架构

2.1 服务形态

原子化服务
├─ 元能力包(hap)
│   └─ 服务代码 + 资源
├─ 服务卡片(Widget)
│   └─ 桌面快捷入口
└─ 服务发现
    └─ 搜索/扫码/分享链接

2.2 服务卡片

typescript
// 服务卡片
@Entry
@Component
struct ServiceWidget {
    @State title: string = '服务标题'
    @State data: string = '服务数据'

    build() {
        Column() {
            Text(this.title)
                .fontSize(20)
            Text(this.data)
                .fontSize(14)
            Button('点击')
                .onClick(() => {
                    // 拉起服务
                    this.openService()
                })
        }
        .width('100%')
        .height('100%')
    }

    openService(): void {
        // 拉起原子化服务
    }
}

3. 跨设备流转

3.1 服务流转

手机                      平板/智慧屏
┌─ 原子化服务 ──┐        ┌─ 原子化服务 ──┐
│ 正在播放视频  │  流转   │ 继续播放视频  │
│                │ ────► │                │
│ 服务状态保持  │         │ 服务状态保持  │
└───────────────┘        └──────────────┘

3.2 流转实现

typescript
import { distributedHardware } from '@kit.DistributedHardwareKit'

// 发起服务流转
async function transferService(targetDeviceId: string): Promise<boolean> {
    let result = await distributedHardware.transferService({
        serviceId: 'my_service',
        targetDeviceId: targetDeviceId,
        state: this.getCurrentState()  // 保存服务状态
    })
    
    return result.success
}

// 监听流转事件
distributedHardware.on('serviceTransfer', (event: ServiceTransferEvent) => {
    switch (event.type) {
        case 'transferStart':
            console.log('服务流转开始')
            break
        case 'transferComplete':
            console.log('服务流转完成')
            break
        case 'transferFailed':
            console.error('服务流转失败')
            break
    }
})

4. 原子化服务开发

4.1 元能力包结构

myService/
├── entry/
│   ├── src/
│   │   └── main/
│   │       ├── ets/
│   │       │   ├── pages/
│   │       │   └── components/
│   │       ├── resources/
│   │       │   ├── base/
│   │       │   └── media/
│   │       └── module.json5
│   └── build-profile.json5
├── build-profile.json5
└── hvigorfile.ts

4.2 module.json5

json5
{
    "module": {
        "name": "myService",
        "type": "atom",  // 原子化服务
        "description": "原子化服务",
        "mainElement": "MyService",
        "deviceTypes": ["phone", "tablet", "tv"],
        "deliveryWithInstall": true,
        "installationFree": true  // 免安装
    }
}

5. 面试高频考点

Q1: 原子化服务的核心特性?

回答:免安装、即搜即用、轻量级、跨设备流转。通过元能力包部署,服务卡片提供入口。

Q2: 原子化服务 vs 传统 App?

回答:原子化服务无需安装、轻量、跨设备;传统 App 需要下载安装、较重、常驻设备。


🐱 小猫提示:原子化服务记住 "免安装、即搜即用、元能力包、服务卡片、跨设备流转"