个人分享:作为HarmonyOS的核心架构,应用框架通过FA(Feature Ability)/PA(Particle Ability)解耦和Stage模型实现跨设备协同。以下从三个层面深入解析:
1. FA/PA 原子化服务设计
-
FA:前台有界面的Ability(如登录页)
-
PA:后台无界面Ability(如数据加密服务
// 前台FA调用后台PA(跨进程通信)
let want = {
deviceId: "", // 空表示本机
bundleName: "com.service.core",
abilityName: "DataEncryptPA"
};
let connectOptions = {
onConnect: (element) => {
// 获取PA服务代理
let proxy = element as dataEncrypt.EncryptProxy;
proxy.encryptData("plainText", (err, result) => {
console.log("加密结果:" + result);
});
},
onDisconnect: () => console.error("PA连接断开")
};
// 建立PA连接
let connectionId = this.context.connectAbility(want, connectOptions);
2. Stage模型的核心革新
Stage模型引入多实例分离与跨设备协同总线:
// Stage模型Ability生命周期(以PageAbility为例)
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
// 设备协同场景下获取启动参数
if (want.parameters?.deviceType === "tablet") {
this.loadTabletUI(); // 动态加载平板UI
}
}
onWindowStageCreate(windowStage: window.WindowStage) {
// 窗口级资源初始化
windowStage.loadContent("pages/MainPage", (err) => {});
}
3. HAP动态部署机制
通过模块化HAP包实现按需分发:
// module.json5关键配置
"module": {
"name": "payment_feature",
"type": "feature", // 特性模块
"abilities": [{
"name": "PaymentFA",
"srcEntry": "./ets/payment/PaymentAbility.ts",
"exported": true, // 暴露给其他HAP调用
"metadata": [{
"name": "paymentMethod",
"value": "alipay" // 元数据标识
}]
}]
}
深度集成示例(跨设备服务调用):
// 主设备调用从设备PA服务(核心代码段)
const want = {
deviceId: "123456", // 目标设备ID
bundleName: "com.device.camera",
abilityName: "CameraPA",
parameters: { resolution: "4K" }
};
// 创建协同连接
let connId = this.context.connectAbility(want, {
onConnect: (proxy) => {
let cameraService = proxy as ICameraService;
cameraService.startRecording();
// 监听从设备事件
cameraService.on("frameData", (data) => {
this.processFrame(data);
});
},
onFailed: (code) => {
console.error(`跨设备调用失败,错误码:${code}`);
}
});
// 断开时释放资源
this.context.disconnectAbility(connId);
框架级优化技巧:
-
跨进程通信优化:大数据传输使用
Sequenceable
序列化替代JSON(性能提升3x+) -
Stage模型内存管理:在
onBackground
回调中释放非必要资源 -
HAP按需加载:通过
abilityFilters
声明设备支持能力 -
元能力路由:使用
wantAgent
实现隐式跳转(解耦调用方与被调用方)
架构价值:FA/PA分离使服务复用率提升70%+,Stage模型降低跨设备开发复杂度40%。通过HAP动态组合,应用包体积可缩减50%以上。