讨论广场
全部
讨论
问答
发布
问答 #智解鸿蒙 如何选择适合的分布式锁来保证数据一致性? 2025-11-21 11:23:02 我要怎么选择适合的分布式锁来保证数据一致性?
Devil枫 回答:很高兴回答你的问题。就我个人经验而言,在鸿蒙系统中选择分布式锁,核心是结合作用范围、数据存储位置、需求优先级(高可用 / 高性能 / 易用性)匹配方案: 鸿蒙分布式锁选型需先明确核心前提:锁的作用范围(跨设备 / 跨进程 / 跨线程)、数据存储介质(分布式数据库 / 文件 / 第三方存储)、核心需求侧重。优先推荐原生方案,复杂场景补充跨生态方案: 原生分布式信号量:适用于跨设备 / 跨进程轻量同步 2025-11-21 11:46:56
问答 #智解鸿蒙 鸿蒙系统中如何通过分布式能力实现多设备协同控制? 2025-11-20 19:34:48 比如在手机上调整空调温度时,智慧屏是否可以同步显示调整状态,底层是如何实现这种跨终端状态共享的?
鸿蒙问答专区
Devil枫 回答:数据层:手机端修改的 “空调温度值”“操作时间戳” 等数据,需快速、可靠地传递到智慧屏; 状态层:智慧屏需实时感知数据变化,自动更新 UI 界面的温度显示与操作记录; 体验层:整个过程延迟需控制在用户无感知的范围内(鸿蒙实测跨设备同步延迟≤50ms,部分场景达≤10ms),且无需手动触发刷新。 实现这一功能的底层技术体系,可拆解为 “通信通道 - 数据管理 - UI 渲染” 三层架构,每层各司其职 2025-11-21 08:52:42
问答 #智解鸿蒙 关于使用 Sheet 底部弹窗组件时,顶部导航栏问题? 2025-11-20 16:16:42 鸿蒙 ArkTS 中,使用 Sheet 底部弹窗组件时,弹窗内的可点击按钮被页面固定悬浮的「悬浮操作按钮(FAB)」遮挡,怎么控制 Sheet 弹窗的层级,让弹窗内的按钮能正常点击,且不覆盖顶部导航栏? 问题核心场景补充: 页面结构:顶部有固定导航栏(AppBar)、中间是业务内容、右下角有固定悬浮按钮(FAB,zIndex 设为 90); 交互逻辑:点击按钮弹出 Sheet 底部弹窗(默认从底
鸿蒙问答专区
bug菌¹ 回答:先把结论说前面哈: ArkUI 的 Sheet(bindSheet 半模态)本身没有类似 zIndex 的层级控制接口,没法直接“把 Sheet 提到 FAB 上面、又压在导航栏下面”。 要满足你这三个条件: 顶部导航栏永远在最上层 ✅ 底部 Sheet 不被 FAB 挡住 ✅ 还能正常点击 Sheet 里的按钮 ✅ 需要改布局方案,而不是调 Sheet 的层级。下面给你两套实战可落地的写法  2025-11-20 18:12:16
问答 关于aboutToAppear期遇到的问题.真混乱! 2025-11-19 22:26:54 我在鸿蒙页面中做了一个实时天气更新功能,使用aboutToAppear启动定时器请求天气数据。当我频繁切换页面时,出现以下问题。 1.页面已隐藏但定时器一直在运行,导致无效请求和页面变卡 2.页面重新显示时重复触发初始化逻辑,造成了数据混乱 我被组长喷了...... 鸿蒙大射们!在线求助!谢谢!
大雷神 回答:1.页面已隐藏但定时器一直在运行,导致无效请求和页面变卡: 这个需要在当前页面调用onDisappear 在里面把定时清除掉就可以了 2.页面重新显示时重复触发初始化逻辑,造成了数据混乱: 如果需要缓存页面减少重复请求 1:可以使用freezeWhenInactive 2:watch(monitor)监听执行 @Entry@Component({ freezeWhenInactive: true 2025-11-21 10:39:52
问答 除了 Container,还有什么方法可以让 List 组件的分割线完整显示? 2025-11-19 16:15:46 除了 Container,还有什么方法可以让 List 组件的分割线完整显示?
Dovis(誓平步青云) 回答:使用 Divider 组件:Divider 是专门用于显示分割线的组件。在 List 的 item 布局中,你可以在每个 item 底部添加 Divider 组件,通过设置其 width、height、backgroundColor 等属性,来定制分割线的样式,从而实现完整且灵活的分割线显示效果 。例如,将 Divider 的 width 设置为 “match_parent”,就能保证分割线横向贯 2025-11-20 20:14:28
问答 开发 HarmonyOS 应用需要什么工具? 2025-11-18 23:21:15 我是一名前端,最近开始接触华为的一些开发项目,之前IDE一直习惯用VSCode,我不比较懒,目前的IDE可以平滑过度兼容开发HarmonyOS吗?
Dovis(誓平步青云) 回答:VS Code 是可以平滑过渡用于 HarmonyOS 开发的。 华为提供了专门的鸿蒙开发插件,比如 “DevEco Device Tool” 插件,你可以在 VS Code 中安装它。安装后,就能在熟悉的 VS Code 环境里,进行鸿蒙应用开发啦。它支持创建鸿蒙项目,对项目的文件结构、资源管理等都能很好地适配。编码时,会提供针对鸿蒙开发的代码智能提示、语法检查等功能,就像你平常在 VS Cod 2025-11-20 20:14:58
问答 已解决 在 Harmony 开发中遇到 BusinessError 时如何快速判断是权限问题、参数问题还是 API 不支持? 2025-11-17 10:00:55 在使用 AudioKit(createAudioCapturer、createAudioLoopback 等接口)时,经常会抛出 BusinessError,常见的 code 包括: 201 801 6800101 6800301 6800104 每次都要去翻“通用错误码”和“Audio 错误码”文档,定位效率比较低,想知道有没有比较通用的排查思路,顺便请教下这些常见错误大概对应什么问题。 imp
harmonyos
TechnologyDream 回答:可以把常见错误大致分成三大类:权限 / 授权、API 支持情况、参数与业务逻辑。结合你提到的几个 code,总结一个实战版小表: 具体含义以你当前版本的「通用错误码说明」和「Audio 错误码说明」文档为准,这里重点给排查思路。Gitee 1. 权限 / 授权相关 201 Permission denied 典型场景: 忘记在 module.json5 里声明 ohos.permission.MI 2025-11-17 10:48:41
问答 已解决 在 Harmony 开发中同时使用回调版和 Promise 版 createAudioRenderer 会造成资源没释放吗?如何规范封装? 2025-11-17 10:00:11 在项目里有两处地方会创建 AudioRenderer: A 页面使用 Promise 版:audio.createAudioRenderer(options) B 页面使用 callback 版:audio.createAudioRenderer(options, (err, data) => {...}) 日常切换页面播放几次音频后,发现: 播放过程中偶尔出现“设备忙”或“渲染器创建失败”
TechnologyDream 回答:只要你没有调用 release(),之前创建的 AudioRenderer 就可能一直占用系统资源。不论是 Promise 版还是 callback 版,底层对象是一样的。 建议做两件事: 统一封装成 Promise 风格(即使底层是 callback 版); 集中管理渲染器的生命周期,比如做一个单例 AudioRendererService。 示例封装: // AudioRendererServ 2025-11-17 10:47:30
问答 已解决 在 Harmony 开发中如何使用 AudioRoutingManager 监听耳机插拔事件?我这边一直没回调 2025-11-17 09:59:20 想在应用中监听有线耳机 / 蓝牙耳机的插拔,看到文档有 AudioRoutingManager 的 on('deviceChange', ...) 接口,就按示例写了代码。但实际插拔耳机时,控制台没有任何日志,回调好像从来没触发过。 import audio from '@ohos.multimedia.audio'; let audioRoutingMa
harmonyos
TechnologyDream 回答:AudioRoutingManager 的典型用法大致是正确的,但要注意几个容易踩坑的点: 确保 audioRoutingManager 变量在整个应用生命周期内是“活着”的 如果把 audioRoutingManager 定义在函数内部,函数执行完就会被 GC,事件回调自然不会触发。你已经把它提到了模块级变量,这是对的,要确保初始化后不要被覆盖。 确认实际调用了初始化方法并等待 Promise 2025-11-17 10:43:44
问答 已解决 在 Harmony 开发中调用 AudioVolumeManager.setVolume 报错 801 Unsupported API,是我用法错了吗? 2025-11-17 09:57:30 想在应用里直接修改系统媒体音量,按照 Audio 管理文档调用 getVolumeManager 和 setVolume,结果在真机上运行时抛 BusinessError.code = 801,错误信息为 Unsupported API。 import { audio } from '@kit.AudioKit'; import { BusinessError } from
harmonyos
TechnologyDream 回答:这个场景下 不是你的代码写错了,而是调用了「System API」。 在 Audio 管理文档里,AudioVolumeManager 上的很多接口(比如 getVolumeGroupInfos、setVolume 等)都标记为: System API:This is a system API. 这类 API 只有系统应用 / 预置应用才能访问,普通三方应用即使在 SDK 里能看到类型,也会在运行 2025-11-17 10:42:48
查看更多