点击快速开始,会打开弹窗,进行蓝牙搜索。可重复进行打开、关闭弹窗进行测试。
- 发布:2026-01-14 13:51
- 更新:2026-01-14 14:55
- 阅读:36
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 15.5 (24F74)
HBuilderX类型: 正式
HBuilderX版本号: 4.66
手机系统: Android
手机系统版本号: Android 15
手机厂商: OPPO
手机机型: 真我
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
期望弹窗打开、关闭正常,可以适配市面上主流设备机型。
期望弹窗打开、关闭正常,可以适配市面上主流设备机型。
实际结果:
弹窗打开、关闭卡顿,多次尝试后无响应。
弹窗打开、关闭卡顿,多次尝试后无响应。
bug描述:
使用OPPO系列手机与华为畅享70(haronyos 4.0.0)手机,如果在uni-popup弹窗中调用蓝牙搜索等相关事件会导致弹窗关闭时卡断,如果多次调用弹窗的打开、关闭事件,弹窗会卡死、无响应。
经过控制台打印发现,上述两种机型下,首次打开弹窗后,执行蓝牙初始化、搜素事件时,如果调用弹窗的关闭事件,受蓝牙事件影响无法立即关闭弹窗;并在弹窗延迟关闭后,再次打开弹窗,会出现卡顿;多次重复后,弹窗直接无响应。
ps:荣耀系列、ios设备无此异常。
当前HBuilderX版本号下,默认package.json默认的"@dcloudio/uni-components":3.0.0-alpha-3000020210521001。怀疑是版本本过旧导致,已升级到"@dcloudio/uni-components": "3.0.0-4080720251210001",仍无法解决问题。
3 个回复
Ask小助手
该bug反馈内容基本完整,标题清晰描述了问题核心,BUG描述详细说明了在OPPO和华为畅享70(HarmonyOS 4.0.0)设备上出现的弹窗卡顿现象,区分了正常设备(iOS/荣耀),并提供了版本信息(HBuilderX 4.66, @dcloudio/uni-components 3.0.0-4080720251210001)。但存在不足:缺少具体代码示例和错误日志截图,复现步骤过于简略("点击快速开始"),无法直接复现问题。
经分析,该bug成立。知识库明确指出蓝牙搜索操作比较耗费系统资源,需在搜索后调用stopBluetoothDevicesDiscovery停止搜索。问题根源在于:在uni-popup弹窗中直接执行蓝牙搜索等耗时操作会阻塞UI线程,尤其在低端Android设备(如OPPO/华为畅享系列)上表现明显。多次开关弹窗未正确停止蓝牙搜索会导致资源累积,最终造成弹窗无响应。
这不是框架缺陷而是典型性能问题。解决方案:1) 弹窗关闭时必须调用stopBluetoothDevicesDiscovery;2) 将蓝牙操作封装在异步任务中避免阻塞UI;3) 参考uni-popup文档设置animation="false"减少动画开销。建议用户补充完整代码示例以便进一步诊断,同时注意Android设备碎片化特性导致的兼容性问题。
u***@126.com (作者)
针对你的回复我要补充一些信息:
1)弹窗关闭时已调用stopBluetoothDevicesDiscovery;
2) 已将蓝牙操作封装在异步任务中,使用async await调用相关蓝牙操作;
我尝试设置animation="false",从而减少动画开销,但是效果不佳。
请问还有没有更好的办法,解决我遇到的问题:部分设备上调用蓝牙操作会影响uni-popup的打开、关闭操作。
DCloud_UNI_yuhe
uni-popup 是一个前端组件, 不使用 uni-popup 的话,也会出现卡顿吗?
2026-01-14 14:49
u***@126.com (作者)
不使用 uni-popup 的话,不会出现卡顿。但在实际操作中,就像我给的图片里,打开弹窗,触发蓝牙初始化、搜索等事件,然后将搜索到蓝牙进行展示,这样就用到了uni-popup弹窗,涉及到了打开、关闭操作。
u***@126.com (作者)
但是uni-popup是一个很常用的组件,除非万不得已,我肯定不会弃用它啊
2026-01-14 14:56
要回复问题请先登录或注册
公告
更多>相关问题