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使用类方法或传输对象的数据量较大的场景中推荐使用该装饰器。

装饰器使用示例

@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.鸿蒙南向开发方向

相关推荐

  1. HarmonyOS 应用开发 —— 常用装饰整理

    2024-04-02 21:18:03       56 阅读
  2. HarmonyOS@Builder装饰

    2024-04-02 21:18:03       71 阅读
  3. 装饰 accessor 装饰

    2024-04-02 21:18:03       52 阅读
  4. harmonyOS学习笔记@Styles装饰与@Extend装饰

    2024-04-02 21:18:03       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 21:18:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 21:18:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 21:18:03       82 阅读
  4. Python语言-面向对象

    2024-04-02 21:18:03       91 阅读

热门阅读

  1. Linux下如何切换多版本Python

    2024-04-02 21:18:03       27 阅读
  2. 蓝桥杯备考随手记: 字符串转换

    2024-04-02 21:18:03       36 阅读
  3. HTTP/HTTPS

    2024-04-02 21:18:03       37 阅读
  4. 【力扣】80.删除有序数组中的重复项Ⅱ

    2024-04-02 21:18:03       33 阅读
  5. 在Linux或类Unix系统中获取帮助的命令

    2024-04-02 21:18:03       35 阅读
  6. Hibernate之Restrictions的用法

    2024-04-02 21:18:03       29 阅读
  7. Linux 内核中PHY子系统(网络):MDIO 总线

    2024-04-02 21:18:03       34 阅读
  8. P1719 最大加权矩形

    2024-04-02 21:18:03       33 阅读