文档管理中心
推荐
最热
最新
其他
已解决
未解决
项目里有一个本地历史记录列表,数据量比较大,所以使用 RDB 做分页查询,每次读取 20 条:LIMIT 20 OFFSET 0` `LIMIT 20 OFFSET 20` `LIMIT 20 OFFSET 40正常情况下没有问题。但是现在有一个场景:用户浏览第一页以后,后台同步任务可能向数据库插入新的记录。如果新记录刚好排在列表前面,用户继续加载第二页时发现有时候会出现上一页已经展示过的数据再次出现,偶尔也会漏掉一条数据。看起来原因应该是第一次和第二次查询之间数据库内容发生了变化,导致 OFFSET 对应的位置发生偏移。想请教一下,在 HarmonyOS RDB 中做这种数据会实时变化的大数据分页,比较推荐的方案是什么?比如是否应该:不使用 OFFSET,而是记录上一页最后一条数据的 id/createTime,下一页使用条件查询;给一次分页过程固定一个时间戳快照;或者 RDB 本身有没有类似稳定游标/快照查询的机制?如果同时还存在删除、更新以及后台同步,怎样保证分页结果尽量不重复、不遗漏?

评论2

浏览 10

发布于1小时前
页面初始化同时读取:内存缓存 → 本地数据库 → 网络数据。三个数据源完成时间不固定。有时候网络数据已经先返回并显示,随后一个较慢的本地数据库查询才结束,反而把 UI 覆盖成旧数据。HarmonyOS 项目里这种多级缓存通常怎样保证数据提交顺序?是给每次加载生成 requestId、比较数据时间戳,还是应该在 Repository 层统一实现 stale-while-revalidate?

评论0

浏览 8

发布于1小时前
多个页面复用同一个 sessionId,怎么管理生命周期避免占用?

评论6

浏览 40

发布于5小时前
Mate 80 Pro Max机型(设备型号代码:SGT-AL10),请问什么时候可以申请加入本轮招募白名单及开放呢?

评论274

浏览 14.1k

发布于2026-06-21 10:44
页面销毁,分布式对象会不会自动退出 session?

评论4

浏览 30

发布于5小时前
想请教各位: 1、HarmonyOS Camera Kit(API24)有没有对外开放 H_LOG 相关 API?第三方应用是否可以调用 H‑LOG 色彩空间,录制 Log 格式视频? 2、如果官方没有开放该接口,后续系统版本是否有开放的计划?有没有其他替代方案可以实现类似的录制效果?测试发现,系统预置相机可以正常输出 H‑LOG 视频,但是翻阅公开能力清单,找不到对应的接口说明。担心这部分属于相机硬件独占能力,第三方应用无法接入。有做相机二次开发的小伙伴遇到这个需求吗,欢迎分享经验。

评论4

浏览 29

发布于5小时前
在鸿蒙开发学习过程中遇到了一个问题想请教大家:ArkUI 自定义组件如何实现高性能的列表懒加载与复用?我自己查了官方文档和示例项目,但还是有些地方不太理解,想听听大家的实战经验。大家在实际项目中是怎么处理这类问题的?有没有常见的坑点需要注意?推荐的最佳实践是什么?欢迎分享你的思路和代码片段,互相学习,一起进步!

评论7

浏览 47

发布于6小时前
Nova12、13、14Mate60、70这个月有希望吗 都好久了 不会等到10月吧

评论106

浏览 4.5k

发布于2026-08-12 23:09
HarmonyOS分布式数据对象通过sessionld建立跨设备同步关系时。一个同步关系同一设备能否加入多个对象?若设备A已加入sessionl。能否尝试再次加入?

评论5

浏览 37

发布于6小时前
今天想和大家深入聊一个鸿蒙开发中的技术话题:HarmonyOS 中 @State 与 @Observed 在状态管理上该如…这个问题在实际项目中经常遇到,不同的团队可能有不同的实现方案。想抛砖引玉,和大家探讨一下:你对这个技术点的理解是什么?在你的项目中是怎么应用的?有哪些经验教训可以分享?欢迎各抒己见,无论你是初学者还是资深开发者,都可以聊聊你的看法。如果能附上代码示例或官方文档链接就更好了!

评论6

浏览 39

发布于6小时前
HarmonyOS的分布式数据管理器DDMS在多设备同时修改同一数据时。采用什么机制保证最终一致性?。如果业务场景需要自定义冲突合并规则(如保留特定设备的参数)应如何做?

评论7

浏览 43

发布于7小时前
在鸿蒙应用开发中,涉及用户隐私数据时,如何把握敏感权限的申请时机?如何在保证功能正常的前提下,实现数据最小化采集?希望社区能给出合规建议和实践方案,谢谢!

评论10

浏览 30

发布于7小时前
在ArkTS分布式数据管理场景中,当多设备同时更新同一份数据时,容易出现版本冲突。我想请教社区:遇到分布式数据更新冲突时,应如何设计合并策略?是否有推荐的代码思路或API使用方式,能够平衡数据一致性与用户体验?希望有经验的朋友给出建议。

评论6

浏览 35

发布于7小时前
InputMethodExtensionAbility做定制键盘,怎样在键盘窗口里嵌入Web组件加载动态皮肤,同时保证输入延迟低于 50ms?

评论5

浏览 37

发布于7小时前
什么时候可以升到鸿蒙纯血系统7.0?

评论53

浏览 1.3k

发布于2026-08-10 05:27
用Window的setSpecificSystemBarEnabled隐藏导航条后,怎样处理手势返回区域和onBackPress的冲突?

评论7

浏览 30

发布于7小时前
最近在用 AI 开发一个简单的计算器,但在开发过程中发现一个很严重的问题:我让 AI 把那些数字按钮全部弄成圆的,但一直没法弄成正圆。每次弄出来的都是带圆角的方形,没法弄成圆的。请问该怎么样才能做出圆形的数字按键?

评论2

浏览 28

发布于昨天14:54
在Mate80系列上系统相机已经可以录制log视频了,三方 API 的 H_LOG 是否开放?或是否允许三方应用录制log视频?

评论12

浏览 53

发布于昨天14:03
设备/环境:SGT-AL10 · HarmonyOS 7.0.0.105 · API 26 · DevEco Studio(hms SDK,UIDesignKit 声明 6.1.0(23)/6.1.1(24));应用 metadata 已配置 ohos.arkui.UIMaterial.state = "enable";targetAPIVersion ≥ 26;entry 模块;系统设置"沉浸光感" = 强(最高档)。问题现象:底部导航(悬浮胶囊 + 独立圆形)由普通 ArkUI 组件(Stack/Row)通过 systemMaterial(new uiMaterial.ImmersiveMaterial(...)) 接入沉浸式系统材质。HarmonyOS 7.0.0.105 SP6 系统更新之前:胶囊呈现真实玻璃质感(折射/光晕/通透)。SP6 更新之后:同一代码、同一设备、未改任何配置——胶囊变成纯透明的卡片(背后内容直接透出,无任何材质滤镜/折射/高光;看起来就像完全没有材质)。已按官方文档验证:按"沉浸光感"官方指南示例 1 的写法复刻(Column/Stack + .backgroundColor(Color.Transparent) 写在 .systemMaterial(...) 之前 + borderRadius + 顺序正确),同样失效。按"通用组件封装"实践(ImmersiveSurface:独立组件 + BuilderParam 内容 + 透明背景 + borderRadius + clip(true) + systemMaterial 最后),同样失效。运行时探针证据(关键):deviceInfo.apiAvailable('26.0.0') = true;uiMaterial.getMaterialInfo().state = 1(≠ DISABLE)→ 应用侧门全过;new uiMaterial.ImmersiveMaterial({ style: REGULAR, materialColor: '#80FF0000', interactive: true, lightEffect: {color: undefined} }) 传入 systemMaterial 后,50% 红色 materialColor 在画面上零差异(胶囊未变粉)——证明材质滤镜完全未被渲染(不是"样式选错/背景遮挡"类问题)。对照:同一设备上,系统组件的表面(如音乐条、系统设置预览)沉浸光感正常;HDS HdsTabs 官方悬浮页签(barFloatingStyle.systemMaterialEffect,materialType/materialLevel 模式)玻璃材质正常——唯独第三方应用里自定义 ArkUI 节点的 systemMaterial 不渲染。求助点:自定义 ArkUI 组件(Stack/Row/Column 等普通容器)的 systemMaterial 在 7.0.0.105(SP6) 是否被限制/降级?是否已有已知问题或需要新的启用条件?应用侧如何判定设备的沉浸光感算力档位(低/中/高)与全局材质等级?官方指南示例 5 提到 uiMaterial.getGlobalMaterialLevel() / uiMaterial.isImmersiveMaterialSupported(),但当前 SDK 的 ArkTS 声明中不存在这两个 API(能力清单 ArkUI.json 中有声明,since 26.0.0)——这是声明回退还是需要更高 SDK 补丁?如果自定义组件的材质确实无法恢复,官方推荐的自定义底部导航正确载体是什么(HDS 已确认可用,但存在自定义页签内容/动画限制)?代码片段(完整:普通 ArkUI 组件 + 沉浸光感)以下 = 生产组件中"普通 ArkUI 组件 + 材质接入"的完整相关代码(约 120 行)。 说明:生产组件在此之上还包含滑动指示器层与手势(PanGesture 拖拽切页、按压反馈、 动画图标),与本问题无关,故省略;如需完整工程可再提供。import { uiMaterial } from '@kit.ArkUI'; import { deviceInfo } from '@kit.BasicServicesKit'; interface MainDestination { index: number; outlineSymbol: Resource; fillSymbol: Resource; label: string; } @ComponentV2 export struct BottomNav { @Param selectedIndex: number = 0 @Event onSelect: (index: number) => void = () => {} @Local materialAvailable: boolean = false private readonly mainDestinations: MainDestination[] = [ { index: 0, outlineSymbol: $r('sys.symbol.message'), fillSymbol: $r('sys.symbol.message_fill'), label: 'Chat' }, { index: 1, outlineSymbol: $r('sys.symbol.person_crop_circle_fill_1'), fillSymbol: $r('sys.symbol.person_crop_circle_fill_1'), label: 'Contacts' }, { index: 2, outlineSymbol: $r('sys.symbol.gearshape'), fillSymbol: $r('sys.symbol.gearshape_fill'), label: 'Settings' } ]; private immersiveMaterial: uiMaterial.ImmersiveMaterial | undefined = undefined; aboutToAppear(): void { try { this.materialAvailable = deviceInfo.apiAvailable('26.0.0'); if (this.materialAvailable) { const info = uiMaterial.getMaterialInfo(); this.materialAvailable = info.state !== uiMaterial.MaterialState.DISABLE; } this.immersiveMaterial = this.materialAvailable ? new uiMaterial.ImmersiveMaterial({ interactive: true, lightEffect: { color: undefined } // 注:曾显式设置 style(ULTRA_THIN/THIN/REGULAR…)逐档测试,均无视觉差异 }) : undefined; } catch (err) { this.materialAvailable = false; this.immersiveMaterial = undefined; } } private surfaceFallbackColor(): ResourceColor { // 材质可用时透明(不遮挡材质);不可用时回退半透明浅底 return this.materialAvailable ? Color.Transparent : $r('sys.color.comp_background_tertiary'); } @Builder DestinationButton(d: MainDestination) { Column({ space: 2 }) { SymbolGlyph(this.selectedIndex === d.index ? d.fillSymbol : d.outlineSymbol) .fontSize(22) .fontColor([this.selectedIndex === d.index ? $r('sys.color.icon_emphasize') : $r('sys.color.icon_primary')]) Text(d.label) .fontSize(10) .fontColor(this.selectedIndex === d.index ? $r('sys.color.icon_emphasize') : $r('sys.color.icon_primary')) } .justifyContent(FlexAlign.Center) .layoutWeight(1) .height('100%') .backgroundColor(Color.Transparent) .onClick(() => { this.onSelect(d.index); }) .accessibilityGroup(true) .accessibilityText(d.label) .accessibilitySelected(this.selectedIndex === d.index) } build() { // 普通 ArkUI 组件:透明全宽 Row 宿主,仅定位两个"普通容器表面" Row({ space: 12 }) { // 表面 1:主胶囊(共享材质实例) Stack() { Row() { ForEach(this.mainDestinations, (d: MainDestination) => { this.DestinationButton(d) }, (d: MainDestination) => `${d.index}`) } .width('100%') .height('100%') } .layoutWeight(1) .height(56) // 普通容器 + 普通属性 .borderRadius(28) .clip(true) .shadow({ radius: 24, color: 'rgba(0,0,0,0.16)', offsetX: 0, offsetY: 6 }) .backgroundColor(this.surfaceFallbackColor()) // ← 写在 systemMaterial 之前(官方顺序) .systemMaterial(this.immersiveMaterial!) // ← 通用属性接入沉浸式系统材质 // 表面 2:独立圆形(同一材质实例) Stack() { Stack() { Text('A').fontSize(22).fontWeight(FontWeight.Medium).fontColor(Color.White) } .alignContent(Alignment.Center) .width(44) .height(44) .borderRadius(22) .backgroundColor('#0A59F7') } .alignContent(Alignment.Center) .width(56) .height(56) .borderRadius(28) .clip(true) .shadow({ radius: 24, color: 'rgba(0,0,0,0.16)', offsetX: 0, offsetY: 6 }) .backgroundColor(this.surfaceFallbackColor()) .systemMaterial(this.immersiveMaterial!) .onClick(() => { this.onSelect(3); }) .accessibilityGroup(true) .accessibilityText('Profile') } .width('100%') .padding({ left: 20, right: 20 }) .margin({ bottom: this.systemInsetVp() + 8 }) // 底部安全区留白 .backgroundColor(Color.Transparent) .hitTestBehavior(HitTestMode.Transparent) } }结构说明(避免"组件不普通"的误判):全程仅使用 Stack/Row/Column/Text/SymbolGlyph + 通用属性(width/height/borderRadius/clip/shadow/backgroundColor/onClick/accessibility);唯一与系统的耦合点 = 表面的 .backgroundColor(Color.Transparent) 与 .systemMaterial(...);两个表面共享一个 uiMaterial.ImmersiveMaterial 实例(aboutToAppear 中创建)。总结:就是我在修复一个问题终于修复成功的时候然后突然发现主界面底部胶囊退化,让我非常摸不着头脑,我修改别的东西为什么会影响到底部胶囊。想来想去,唯一怀疑的线索也只有昨天下午进行的一次系统更新。

评论34

浏览 793

发布于2026-08-30 02:06
半本前瞻
|
技术支持
点赞1
回复于2026-08-31 01:24
页面维护几万条数据的大数组,但一次操作通常只修改其中一个对象。从代码看只是:this.data[index].status = xxx但状态管理框架需要追踪变化。这种情况下底层是否会产生整个数组/对象树的额外复制或代理开销?对超大状态集合,是否应该把 UI 状态和原始业务数据拆开存储?

评论8

浏览 42

发布于昨天11:45
一个应用包含多个 HAP,不同 HAP 都需要访问用户基础信息。如果每个 HAP 都在内存里维护自己的缓存,其中一个 HAP 修改数据以后,其他 HAP 的缓存可能仍然是旧值。对这种场景应该让每个 HAP 每次读取持久化数据,还是设计统一的数据提供模块?HarmonyOS 多 HAP 架构下有没有推荐的跨模块缓存失效通知方案?

评论5

浏览 37

发布于昨天11:41
如何实现组件边缘的折射效果 背景纯透明 仅边缘折射效果 并且可以根据背景的变化实时进行预览的效果 这种相果 也就是苹果的液态玻璃效果 如何在鸿蒙当中使用arkui去实现液态玻璃的效果 能否完全复刻苹果的液态玻璃效果

评论47

浏览 476

发布于2026-09-05 02:57
云云
|
采纳答复
点赞2
回复于2026-09-10 06:57

我要提问题

月度答复贡献榜
用户头像
橙动创意
回帖957
粉丝52
关注
用户头像
心系天下
回帖843
粉丝13
关注
用户头像
仙银
回帖400
粉丝92
关注
用户头像
蓝瘦的蜕变
回帖395
粉丝110
关注
用户头像
慢行
回帖366
粉丝17
关注
邀您回答
换一批
页面使用多个异步数据源时,如何避免 UI 出现“短暂回退到旧状态”?
热门标签
1

HarmonyOS 5

2

HarmonyOS 6

3

DevEco Studio

4

UI

5

HarmonyOS

6

ArkUI (方舟UI框架)

7

HarmonyOS 7

8

App开发

9

Ability框架

了解社区公约,与您携手共创和谐专业的开发者社区。
在 App 中查看