自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 【鸿蒙基于API 13实战开发】—— 自定义扩展:AttributeUpdater

大量属性频繁更新时,如果使用状态变量,会导致前端状态管理计算量太大,并需要对单个组件进行全量的属性更新。虽然可以通过 AttributeModifier 的机制按需更新,但是前端还是默认会有一些diff和reset的策略。为此引入了AttributeUpdater的能力,它是一个特殊的AttributeModifier,除了继承AttributeModifier的能力,还提供了获取属性对象的能力。通过属性对象可以不经过状态变量,直接更新对应属性。

2025-02-12 17:50:05 936

原创 【鸿蒙基于API 13实战开发】—— 自定义扩展:AttributeModifier

Styles和@Extend均是编译期处理,不支持跨文件的导出复用。@Styles仅能支持通用属性、事件,不支持组件特有的属性。@Styles虽然支持在多态样式下使用,但不支持传参,无法对外开放一些属性。@Extend虽然能支持特定组件的私有属性、事件,但同样不支持跨文件导出复用。@Styles、@Extend对于属性设置,无法支持业务逻辑编写,动态决定是否设置某些属性。只能通过三元表达式对所有可能设置的属性进行全量设置,设置大量属性时效率低下。

2025-02-12 17:49:11 720

原创 【鸿蒙基于API 13实战开发】—— 触屏事件

触摸事件可以同时多指触发,通过event参数可获取触发的手指位置、手指唯一标志、当前发生变化的手指和输入的设备源等信息。触屏事件指当手指/手写笔在组件上按下、滑动、抬起时触发的回调事件。包括 点击事件 、 拖拽事件 和 触摸事件。点击事件是指通过手指或手写笔做出一次完整的按下和抬起动作。event参数提供点击事件相对于窗口或组件的坐标位置,以及发生点击的事件源。例如通过按钮的点击事件控制图片的显示和隐藏。通过按钮的点击事件控制图片的显示和隐藏。

2025-02-11 13:50:16 445

原创 【鸿蒙基于API 13实战开发】—— 事件分发机制

ArkUI触控事件,根据输入源不同,主要划分为touch类与mouse类。touch类的输入源包含:finger、penmouse类的输入源包含:mouse、touchpad、joysticktouchmouse触摸事件触摸事件点击事件鼠标事件拖拽事件点击事件手势事件拖拽事件手势事件无论是touch类事件还是mouse类事件,在ArkUI框架上均由触摸测试发起,触摸测试直接决定了ArkUI事件响应链的生成及事件的分发。

2025-02-10 22:24:02 729

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件动画:曲线

动画曲线是属性关于时间的变化函数,决定属性变化时产生动画的运动轨迹。某一时刻下动画曲线的斜率代表动画的速度,对应属性变化的快慢。一条优秀的动画曲线具备连续光滑、符合用户意图、符合物理世界客观规律的特点。开发者可结合用户的使用场景和意图,为动效选取合适的动画曲线。根据动画曲线是否符合物理世界客观规律,可将其分为物理曲线(ArkUI当前提供了多种物理弹簧曲线)和传统曲线两种类型。相比于传统曲线,物理曲线产生的运动轨迹更加符合用户认知,有助于创造自然生动的动画效果,建议开发者优先使用物理曲线。

2025-02-10 13:54:52 436

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件动画

ArkUI为组件提供了通用的属性动画和转场动画能力的同时,还为一些组件提供了默认的动画效果。例如, List 的滑动动效、 Button 的点击动效,是组件自带的默认动画效果。在组件默认动画效果的基础上,开发者还可以通过属性动画和转场动画对容器组件内的子组件动效进行定制。部分组件支持通过 属性动画 和 转场动画 自定义组件子Item的动效,实现定制化动画效果。例如, Scroll 组件中可对各个子组件在滑动时的动画效果进行定制。减少开发者工作量,例如列表滑动组件自带滑动动效,开发者直接调用即可。

2025-02-09 21:42:29 450

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:旋转屏动画增强&&页面转场动画

如果通过router.back操作从页面B返回到页面A,则页面B退出,做页面退场动画,页面A进入,做页面入场动画。即页面的PageTransitionEnter既可能是由于新增页面(push,入栈)引起的新页面的入场动画,也可能是由于页面返回(back,或pop,出栈)引起的页面栈中老页面的入场动画,为了能区分这两种形式的入场动画,提供了type参数,这样开发者能完全定义所有类型的页面转场效果。两个页面间发生跳转,一个页面消失,另一个页面出现,这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。

2025-02-09 19:03:53 971

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:共享元素转场 (一镜到底)

在半模态转场的同时设置一全模态转场(bindContentCover)页面无转场出现,该页面仅有需要做共享元素转场的组件,通过属性动画,展示组件从初始界面至半模态页面的一镜到底动效,并在动画结束时关闭页面,并将该组件迁移至半模态页面。在初始界面挂载半模态转场和全模态转场两个页面,半模态页按需布局,全模态页面仅放置一镜到底动效需要的组件,抓取布局信息,使其初始位置为初始界面图片的位置。如下例所示,在点击图片后,该图片消失,同时在另一个位置出现新的图片,二者之间内容相同,可以对它们添加一镜到底动效。

2025-02-08 21:36:17 725

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:导航转场动画

3.在List内的组件添加onClick方法,并在其中使用路由栈NavPathStack的pushPathByName方法,使组件可以在点击之后从当前页面跳转到输入参数name在路由表内对应的页面。3.在子页面内的组件添加onClick,并在其中使用路由栈NavPathStack的pushPathByName方法,使组件可以在点击之后从当前页面跳转到输入参数name在路由表内对应的页面。1.使用Navigation创建导航主页,并创建路由栈NavPathStack以此来实现不同页面之间的跳转。

2025-02-08 17:15:27 405

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:属性动画

属性接口(以下简称属性)包含尺寸属性、布局属性、位置属性等多种类型,用于控制组件的行为。针对当前界面上的组件,其部分属性(如位置属性)的变化会引起UI的变化。添加动画可以让属性值从起点逐渐变化到终点,从而产生连续的动画效果。根据变化时是否能够添加动画,可以将属性分为可动画属性和不可动画属性。判断一种属性是否适合作为可动画属性主要有两个标准:属性变化能够引起UI的变化。例如, enabled 属性用于控制组件是否可以响应点击、触摸等事件,但enable属性的变化不会引起UI的变化,因此不适合作为可动画属性。

2025-02-08 14:59:24 628

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:动画

ArkUI中提供多种动画接口(属性动画、转场动画等),用于驱动属性值按照设定的动画参数,从起始值逐渐变化到终点值。决定动画流畅度的一个重要指标就是帧率FPS(Frame Per Second),即每秒的动画帧数,帧率越高则动画就会越流畅。以线性动画曲线为例,在动画时长内,属性值将从起点值匀速变化到终点值。动画接口驱动属性值按照动画参数决定的规律,从原来的状态连续过渡到新的状态,进而在UI上产生的连续视觉效果。在需要为UI变化添加过渡的场景,都可以使用动画,如开机、应用启动退出、下拉进入控制中心等。

2025-02-07 21:37:49 577

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:不依赖UI组件的全局自定义弹窗 (推荐)

创建ComponentContent。ComponentContent用于定义自定义弹窗的内容。其中,wrapBuilder(buildText)封装自定义组件,new Params(this.message)是自定义组件的入参,可以缺省,也可以传入基础数据类型。打开自定义弹窗。通过调用openCustomDialog接口打开的弹窗默认为customStyle为true的弹窗,即弹窗的内容样式完全按照contentNode自定义样式显示。})})关闭自定义弹窗。

2025-02-07 13:41:11 1057

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:模态弹窗 (ModelDialog)

模态(Modal)是UI组件或视图的一种状态。其在消失之前,用户只能对处于模态的组件或视图进行响应,不能操作其他非模态的组件或视图,干扰性比较强。ArkUI中可通过使用 AlertDialog 、 CustomDialog 、 ActionSheet 、 Popup 、 Menu 、 ContextMenu 等组件实现模态类弹窗能力。名称使用场景通常用来展示用户当前需要或必须关注的信息或操作。如用户操作一个敏感行为时响应一个二次确认的弹窗。当需要用户关注或确认的信息存在列表选择时使用。

2025-02-06 21:31:45 343

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:菜单(Menu)

当默认样式不满足开发需求时,可使用 @Builder 自定义菜单内容,通过bindMenu接口进行菜单的自定义。

2025-02-06 14:04:40 274

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件:气泡提示 (Popup)

开发者可以使用CustomPopupOptions的builder创建自定义气泡,@Builder中可以放自定义的内容。除此之外,还可以通过popupColor等参数控制气泡样式。@Entry@Component// popup构造器定义弹框内容build() {Column() {})builder: this.popupBuilder, // 气泡的内容placement:Placement.Bottom, // 气泡的弹出位置。

2025-01-23 16:21:55 685

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件(视频播放 (Video))

其中,src指定视频播放源的路径,加载方式请参考 加载视频资源 ,currentProgressRate用于设置视频播放倍速,previewUri指定视频未播放时的预览图片路径,controller设置视频控制器,用于自定义控制视频。Video组件用于播放视频文件并控制其播放状态,常用于为短视频和应用内部视频的列表页面。Video组件回调事件主要为播放开始、暂停结束、播放失败、播放停止、视频准备和操作进度条等事件,除此之外,Video组件也支持通用事件的调用,如点击、触摸等事件的调用。

2025-01-23 13:59:49 1135

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件(显示图片 (Image))

Image组件首次加载网络图片时,需要请求网络资源,非首次加载时,默认从缓存中直接读取图片,更多图片缓存设置请参考 setImageCacheCount 、 setImageRawDataCacheSize 、 setImageFileCacheSize。但是特定情况下,图片刷新时会出现闪烁,这时可以使用syncLoad属性,使图片同步加载,从而避免出现闪烁。该接口通过图片数据源获取图片,支持本地图片和网络图片的渲染展示。其中,src是图片的数据源,加载方式请参考 加载图片资源。

2025-01-22 21:55:10 768

原创 【鸿蒙基于API 13实战开发】—— ArkUI 组件(按钮 (Button))

设置边框弧度。使用通用属性来自定义按钮样式。例如通过borderRadius属性设置按钮的边框弧度。设置文本样式。通过添加文本样式设置按钮文本的展示样式。设置背景颜色。添加backgroundColor属性设置按钮的背景颜色。创建功能型按钮。为删除操作创建一个按钮。

2025-01-22 13:46:52 715

原创 【鸿蒙基于API 13实战开发】—— ArkUI 页面布局(应用沉浸式效果)

典型应用全屏窗口UI元素包括 状态栏 、应用界面和底部 导航条 ,其中状态栏和导航条,通常在沉浸式布局下称为避让区;避让区之外的区域称为安全区。开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,从而使用户获得最佳的UI体验。图1界面元素示意图UI元素避让处理:导航条底部区域可以响应点击事件,除此之外的可交互UI元素和应用关键信息不建议放到导航条区域。状态栏显示系统信息,如果与界面元素有冲突,需要考虑避让状态栏。

2025-01-21 21:44:30 709

原创 【鸿蒙基于API 13实战开发】—— ArkUI 页面布局(创建列表 (List))

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。使用列表可以轻松高效地显示结构化、可滚动的信息。通过在 List 组件中按垂直或者水平方向线性排列子组件 ListItemGroup 或 ListItem ,为列表中的行或列提供单个视图,或使用 循环渲染 迭代一组行或列,或混合任意数量的单个视图和ForEach结构,构建一个列表。

2025-01-21 14:12:05 861

原创 【鸿蒙基于API 13实战开发】—— ArkUI 页面布局(媒体查询 (@ohos.mediaquery))

媒体查询 作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景:针对设备和应用的属性信息(比如显示区域、深浅色、分辨率),设计出相匹配的布局。当屏幕发生动态改变时(比如分屏、横竖屏切换),同步更新应用的页面布局。

2025-01-20 21:42:14 784

原创 【鸿蒙基于API 13实战开发】—— ArkUI 页面布局(层叠布局 (Stack))

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。如图1,Stack作为容器,容器内的子元素的顺序为Item1->Item2->Item3。图1层叠布局。

2025-01-20 13:52:19 346

原创 【鸿蒙基于API 13实战开发】——ArkTS编译工具链(在build-profile.json5中配置arkOptions)

types字段支持填写包名、包所在位置的相对路径以及声明文件所在相对路径,仅支持当前模块内的查找,若目录下存在同名文件(后缀不同),默认加载顺序.d.ets>.d.ts。(2)填写包所在相对路径方式:支持在基于build-profile.json5的相对路径中查找定义的声明文件,如"./oh_modules/@types/mocha"。(3)填写声明文件所在相对路径方式:支持查找相对路径下的声明文件,如"./src/main/ets/pages/global"。

2025-01-19 19:15:52 289

原创 【鸿蒙基于API 13实战开发】——ArkTS编译工具链(Disassembler反汇编工具)

随着应用程序功能的不断扩展,冷启动所需的时间显著增长,主要是由于在启动初期加载了大量模块,其中存在大量未被实际执行的冗余文件。这种情形不仅拖延了应用的初始化过程,还造成了资源的无效占用,亟需采取措施精简加载流程,剔除非必需的文件执行,以优化冷启动性能,确保用户体验的流畅性。

2025-01-18 20:36:18 320

原创 【鸿蒙基于API 13实战开发】—— ArkTS 模块化(同步方式动态加载native模块)

loadNativeModule接口的功能是同步方式动态加载native模块。当需要使用某个模块时,再使用该接口进行加载,可以缩短冷起耗时。但是使用该接口时会产生加载so耗时,需要开发者自行评估是否会对功能产生影响。

2025-01-18 19:18:11 427

原创 【鸿蒙基于API 13实战开发】—— ArkTS 模块化(动态加载)

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

2025-01-17 17:50:52 882

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(十)C++线程间数据共享场景

然后再通过反序列化接口从serializationData中反序列化出UI主线程创建的Sendable对象,并保存到result中,从而实现了Sendable对象的跨C++线程传递。当应用在C++层进行多线程的并发计算时,因为ArkTS的API需要在ArkTS的环境执行,为了避免在非UI主线程每次回调等待UI主线程ArkTS环境中执行的API调用结果,需要在这些C++线程上创建ArkTS执行环境和直接调用API,并且可能需要在C++线程之间对Sendable对象进行共享和操作。

2025-01-17 14:52:23 641

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(九)ArkUI数据更新场景

当需要网络下载或者本地生成的数据需要发送到UI线程进行展示时,因为ArkUI的标注和 @Sendable装饰器 不能同时修饰变量和对象,所以对于此类场景,需要使用 makeObserved 在ArkUI中导入可观察的Sendable共享数据。

2025-01-16 21:44:33 398

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(八)全局配置项功能场景

对于需要使用进程单例的场景,例如不同并发实例间需要数据保持一致的全局配置项业务,可以采用共享模块来实现。如下示例实现了只有Wi-Fi打开且用户登陆后才能下载的业务功能,具体步骤如下。2.UI主线程及子线程访问全局配置项。

2025-01-16 20:31:35 259

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(七)业务模块并发加载场景

通过使用ArkTS提供的TaskPool能力,可以将不同业务初始化任务移到子线程中,业务模块通过下沉C++实现成 NativeBinding对象 、或者在ArkTS层定义 Sendable对象 ,就可以将初始化的模块返回UI主线程调用,实现如下。在应用启动过程中,会有多个业务模块需要加载,例如地图类应用的定位、打车、导航等不同的模块,如果全部在UI主线程初始化,则会严重影响冷启动耗时。此时需要在不同子线程并行化加载这些模块功能,降低启动耗时。

2025-01-16 17:35:04 300

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(六)批量数据写数据库

由于数据库数据跨线程传递存在耗时,当数据量较大时,仍然会占用UI主线程,推荐采用Sendable封装数据库数据,降低跨线程开销。对于需要频繁数据库操作的场景,由于读写数据库存在耗时,因此推荐在子线程中操作,避免阻塞UI线程。通过ArkTS提供的TaskPool能力,可以将数据库操作任务移到子线程中,实现如下。1.定义数据库中的数据格式,可采用Sendable,减少跨线程耗时。1.创建多个子任务,支持数据库创建、插入、查询、清除等操作。2.UI主线程发起,在子线程进行数据的增删改查等操作。

2025-01-16 16:25:38 235

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(五)业务模块并发加载场景

由于数据库数据跨线程传递存在耗时,当数据量较大时,仍然会占用UI主线程,推荐采用Sendable封装数据库数据,降低跨线程开销。对于需要频繁数据库操作的场景,由于读写数据库存在耗时,因此推荐在子线程中操作,避免阻塞UI线程。通过ArkTS提供的TaskPool能力,可以将数据库操作任务移到子线程中,实现如下。1.定义数据库中的数据格式,可采用Sendable,减少跨线程耗时。1.创建多个子任务,支持数据库创建、插入、查询、清除等操作。2.UI主线程发起,在子线程进行数据的增删改查等操作。

2025-01-16 15:06:19 227

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(四)常驻任务并发场景

在应用业务实现过程中,对于一些长耗时(大于3min)且并发量不大的常驻任务场景,使用Worker在后台线程中运行这些耗时逻辑,避免阻塞UI主线程而导致出现丢帧卡顿等影响用户体验性的问题。常驻任务是指相比于短时任务,时间更长的任务,可能跟UI主线程生命周期一致。相比于长时任务,常驻任务更倾向于跟线程绑定的任务,单次运行时间更长(比如超过3分钟)。

2025-01-16 14:00:07 589

原创 【鸿蒙基于API 13实战开发】—— 应用多线程开发(三)长时任务并发场景

在应用业务实现过程中,对于需要较长时间不定时运行的任务,称为长时任务。长时任务如果放在UI主线程中执行会阻塞UI主线程的UI业务,出现卡顿丢帧等影响用户体验的问题。因此通常需要将这个独立的长时任务放到单独的子线程中执行。典型的长时任务场景如下所示:上述业务场景均为独立的长时任务,任务执行周期长,跟外部交互简单,分发到后台线程后,需要不定期响应,以获取结果。

2025-01-15 21:37:26 364

原创 【鸿蒙基于API 13实战开发】——ArkTS并发线程间通信(线程间通信对象)

线程间通信指的是并发多线程间存在的数据交换行为。由于ArkTS语言兼容TS/JS,其运行时的实现与其它所有的JS引擎一样,都是基于Actor内存隔离的并发模型提供并发能力。对于不同的数据对象,在ArkTS线程间通信的行为是有差异的,比如普通JS对象、ArrayBuffer对象、SharedArrayBuffer对象等,跨线程的行为是不一致的,包括序列化反序列化拷贝、数据转移、数据共享等不同行为。

2025-01-15 13:49:10 589

原创 【鸿蒙基于API 13实战开发】—— 多线程并发(TaskPool和Worker的对比)

由于TaskPool的工作线程会绑定系统的调度优先级,并且支持负载均衡(自动扩缩容),而Worker需要开发者自行创建,存在创建耗时以及不支持设置调度优先级,故在性能方面使用TaskPool会优于Worker,因此大多数场景推荐使用TaskPool。TaskPool(任务池)和Worker的作用是为应用程序提供一个多线程的运行环境,用于处理耗时的计算任务或其他密集型任务。TaskPool偏向独立任务维度,该任务在线程中执行,无需关注线程的生命周期,超长任务(大于3分钟且非长时任务)会被系统自动回收;

2025-01-14 21:37:43 1099

原创 【鸿蒙基于API 13实战开发】—— 多线程并发(一)

Actor并发模型每一个线程都是一个独立Actor,每个Actor有自己独立的内存,Actor之间通过消息传递机制触发对方Actor的行为,不同Actor之间不能直接访问对方的内存空间。Actor并发模型作为基于消息通信并发模型的典型代表,不需要开发者去面对锁带来的一系列复杂偶发的问题,同时并发度也相对较高,因此得到了广泛的支持和使用。并发模型是用来实现不同应用场景中并发任务的编程模型,常见的并发模型分为基于内存共享的并发模型和基于消息通信的并发模型。

2025-01-14 15:16:05 671

原创 【鸿蒙基于API 13实战开发】—— 异步并发 (Promise和async/await)

并发是指在同一时间内,存在多个任务同时执行的情况。对于多核设备,这些任务可能同时在不同CPU上并行执行。对于单核设备,多个并发任务不会在同一时刻并行执行,但是CPU会在某个任务休眠或进行I/O操作等状态下切换任务,调度执行其他任务,提升CPU的资源利用率。为了提升应用的响应速度与帧率,避免耗时任务对UI主线程的影响,ArkTS提供了异步并发和多线程并发两种处理策略。异步并发是指异步代码在执行到一定程度后会被暂停,以便在未来某个时间点继续执行,这种情况下,同一时间只有一段代码在执行。

2025-01-14 14:01:15 714

原创 【鸿蒙基于API 13实战开发】—— ArkTS容器类库

容器类库,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法,作为纯数据结构容器来使用具有一定的优势。容器类采用了类似静态语言的方式来实现,并通过对存储位置以及属性的限制,让每种类型的数据都能在完成自身功能的基础上去除冗余逻辑,保证了数据的高效访问,提升了应用的性能。当前提供了线性和非线性两类容器。线性类容器底层通过数组实现,非线性类容器底层通过hash或者红黑树实现。线性容器 和 非线性容器 都是非多线程安全的。

2025-01-13 21:22:47 925

原创 【鸿蒙基于API 13实战开发】—— 通过用户首选项实现数据持久化 (C/C++)

用户首选项(Preferences)模块主要提供轻量级Key-Value操作,支持本地应用存储少量数据,数据存储在本地文件中,同时也加载在内存中,所以访问速度更快,效率更高。首选项提供非关系型数据存储,不宜存储大量数据,经常用于操作键值对形式数据的场景。

2025-01-13 16:25:29 1097

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除