鸿蒙知识点笔记(一)

197 阅读6分钟

记录一些实际应试中比较容易考到的知识点。

动态加载的适用场景

  • 当静态导入的模块很明显的降低了代码的加载速度且被使用的可能性很低,或者并不需要马上使用它。
  • 当静态导入的模块很明显的占用了大量的系统内存且被使用的可能性很低。
  • 当被导入的模块,在加载时并不存在,需要异步获取。
  • 当被导入的模块说明符,需要动态构建。静态导入只能使用静态说明符。
  • 当被导入的模块有副作用(这里的副作用,可以理解为模块中会直接运行的代码),这些副作用只有在触发了某些条件才被需要时。

V2状态管理AppStorageV2中的使用限制条件

  • 需要配合UI使用(UI线程),不能在其他线程使用,如不支持@Sendable。
  • 不支持collections.Set、collections.Map等类型。
  • 不支持非buildin类型,如PixelMap、NativePointer、ArrayList等Native类型。

V2状态管理@ComponentV2和@Component的差异

  • 在@ComponentV2装饰的自定义组件中,开发者仅可以使用全新的状态变量装饰器,包括@Local、@Param、@Once、@Event、@Provider、@Consumer等。
  • @ComponentV2装饰的自定义组件暂不支持组件复用、LocalStorage等现有自定义组件的能力。
  • 无法同时使用@ComponentV2与@Component装饰同一个struct结构。
  • @ComponentV2支持一个可选的boolean类型参数freezeWhenInactive,来实现组件冻结功能。
  • 除非特别说明,@ComponentV2装饰的自定义组件将与@Component装饰的自定义组件保持相同的行为。

如何指定半模态窗口高度

  • 三个档位,SheetSize.FIT_CONTENT,SheetSize.LARGE,SheetSize.MEDIUM

动态卡片与静态卡片的相关概念

  • 动态卡片支持自定义交互、动效、滑动等功能,功能丰富但内存占用较大
  • 静态卡片内存占用较小,有助实现整机内存优化,可实现静态信息展示、刷新和点击跳转
  • 卡片的具体配置信息。在上述FormExtensionAbility的元信息(“metadata”配置项)中,可以指定卡片具体配置信息的资源索引。例如当resource指定为$profile:form_config时,会使用开发视图的resources/base/profile/目录下的form_config.json作为卡片profile配置文件
  • isDynamic表示此卡片是否为动态卡片(仅针对ArkTS卡片生效)。true:为动态卡片 。false:为静态卡片。

几个Node-APl数据类型的概念

  • napi_env:用于表示Node-API执行时的上下文
  • napi_status:是一个枚举数据类型,表示Node-API接口返回的状态信息
  • napi_threadsafe_function_call_mode: 该枚举类型定义了两个常量,用于指定线程安全函数的调用模式
  • napi_threadsafe_function_release_mode: 该枚举类型定义了两个常量,用于指定在何时释放线程安全函数的回调函数

HitTestMode枚举说明

  • Default:默认触摸测试效果,自身和子节点都响应触摸测试,但会阻塞兄弟节点的触摸测试。不会影响祖先节点的触摸测试。
  • Block:自身响应触摸测试,阻塞子节点和兄弟节点的触摸测试。会阻塞祖先节点的触摸测试。
  • Transparent:自身和子节点都响应触摸测试,不会阻塞兄弟节点的触摸测试。不会影响祖先节点的触摸测试。
  • None:自身不响应触摸测试,不会阻塞子节点和兄弟节点的触摸测试。不会影响祖先节点的触摸测试。

Performance Analysis Kit(性能分析服务)为开发者提供的能力有哪些

  • HiLog流水日志,提供开发者记录和获取流水日志能力。
  • HiTraceMeter和HiTraceChain跟踪,提供开发者Trace度量和跨线程跨进程分布式跟踪的能力。
  • HiAppEvent应用事件,提供开发者记录故障、行为、安全、统计事件的能力,并订阅系统事件,设置数据处理者完成数据上传。
  • FaultLogger故障日志管理,提供开发者主动查询故障日志的通道。
  • HiDebug资源采集,提供开发者获取应用、系统资源的使用情况。

@AnimatableExtend装饰器的相关概念

  • @AnimatableExtend仅支持定义在全局,不支持在组件内部定义。
  • @AnimatableExtend定义的函数参数类型必须为number类型或者实现 AnimatableArithmetic接口的自定义类型。
  • @AnimatableExtend定义的函数体内只能调用@AnimatableExtend括号内组件的属性方法。

@Track装饰器的使用限制

  • @Track是class对象的属性装饰器。当一个class对象是状态变量时,@Track装饰的属性发生变化,只会触发该属性关联的UI更新;
  • 如果class类中使用了@Track装饰器,那么该class类中非@Track装饰的属性不能在UI中使用,包括不能绑定在组件上、不能用于初始化子组件,错误的使用将导致运行时报错
  • 可以在非UI中使用非@Track装饰的属性,如事件回调函数中、生命周期函数中等。

V2状态管理@Param装饰器的相关概念

  • @Param装饰的变量支持本地初始化,但是不允许在组件内部直接修改变量本身。

  • 被@Param装饰的变量能够在初始化自定义组件时从外部传入,当数据源也是状态变量时,数据源的修改会同步给@Param。

  • @Param可以接受任意类型的数据源,包括普通变量、状态变量、常量、函数返回值等。

  • @Param装饰的变量变化时,会刷新该变量关联的组件。

  • @Param支持观测number、boolean、string、Object、class等基本类型以及Array、Set、Map、Date等内嵌类型。

  • 对于复杂类型如类对象,@Param会接受数据源的引用。在组件内可以修改类对象中的属性,该修改会同步到数据源。

  • @Param的观测能力仅限于被装饰的变量本身。当装饰简单类型时,对变量的整体改变能够观测到;当装饰对象类型时,仅能观测对象整体的改变;当装饰数组类型时,能观测到数组整体以及数组元素项的改变;当装饰Array、Set、Map、Date等内嵌类型时,可以观测到通过API调用带来的变化。详见观察变化。

  • @Param支持null、undefined以及联合类型。


不经常在线,有问题可在微信公众号或者掘金社区私信留言

更多内容可关注

我的公众号悬空八只脚