HarmonyOS 应用开发之@Concurrent装饰器:@Sendable装饰器:声明并校验Sendable类

简介

在使用 TaskPool 时,执行的并发函数若需要传输类对象且使用该类的内部方法,该类需要使用此装饰器修饰,否则无法使用此对象内的方法。SendableClass有以下两种行为:

  • 支持SendableClass序列化。对象分配在各自的虚拟机内存空间,不存在竞争访问,不同线程可以同时读写。

  • 支持SendableClass在跨线程传递时的引用传递(暂不支持)。

说明:

从API version 11开始,该装饰器支持在ArkTS卡片中使用。

当前该装饰器仅支持克隆拷贝,使用时需搭配 setCloneList,否则会抛异常。

基本概念

SendableClass:被@Sendable装饰器修饰的类为SendableClass。

装饰器说明

@Sendable类装饰器 说明
装饰器参数 无。
使用场景限制 仅支持在Stage模型的工程中使用。仅支持在.ets文件中使用。
装饰的类继承关系限制 SendableClass只能继承SendableClass,普通Class可以继承SendableClass。
装饰的对象内的属性类型限制 支持string、number、boolean、SendableClass。禁止使用闭包变量。不支持#定义私有属性,需用private。不支持计算属性。
装饰的对象内的属性的其他限制 成员属性必须显式初始化。成员属性不能跟问号和感叹号。
装饰的对象内的方法参数限制 允许使用local变量、入参和通过import引入的变量。禁止使用闭包变量。
Sendable Class的限制 不支持增加属性、不支持删除属性、允许修改属性,修改前后属性的类型必须一致、不支持修改方法。必须声明或定义在文件顶层,不能定义在函数内。
其他限制 导出SendableClass的文件,不能导出非SendableClass属性。只能标记class,不支持interface和enum。
适用场景 在TaskPool使用类方法或传输对象的数据量较大的场景中推荐使用该装饰器。

装饰器使用示例

ts 复制代码
@Sendable
class TaskpoolTestClass {
  desc: string = "sendable: this is TaskpoolTestClass ";
  taskNum: number = 5;
  printName() {
    console.info("sendable: TaskpoolTestClass desc is: " + this.desc);
  }
  get getTaskNum(): number {
    return this.taskNum;
  }
}

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ......

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ......

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ......

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题

2.性能优化方向

3.架构方向

4.鸿蒙开发系统底层方向

5.鸿蒙音视频开发方向

6.鸿蒙车载开发方向

7.鸿蒙南向开发方向

相关推荐
前端不太难4 分钟前
HarmonyOS PC 焦点系统的正确建模方式
华为·状态模式·harmonyos
前端不太难1 小时前
HarmonyOS PC 如何应对多输入交互?
状态模式·交互·harmonyos
2601_949593658 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9229 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233229 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882111 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
xiaoqi92213 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
听麟13 小时前
HarmonyOS 6.0+ 智慧出行导航APP开发实战:离线地图与多设备位置协同落地
华为·wpf·harmonyos
qq_1777673714 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
jin12332215 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos