u***@126.com
u***@126.com
  • 发布:2026-01-14 13:51
  • 更新:2026-01-14 14:55
  • 阅读:36

【报Bug】在uni-popup弹窗调用蓝牙相关事件会导致弹窗卡顿、无响应

分类:uni-app

产品分类: 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",仍无法解决问题。

2026-01-14 13:51 负责人:无 分享
已邀请:
Ask小助手

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设备碎片化特性导致的兼容性问题。

内容为 AI 生成,仅供参考
u***@126.com

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

u***@126.com (作者)

不使用 uni-popup 的话,不会出现卡顿。但在实际操作中,就像我给的图片里,打开弹窗,触发蓝牙初始化、搜索等事件,然后将搜索到蓝牙进行展示,这样就用到了uni-popup弹窗,涉及到了打开、关闭操作。

  • u***@126.com (作者)

    但是uni-popup是一个很常用的组件,除非万不得已,我肯定不会弃用它啊

    2026-01-14 14:56

要回复问题请先登录注册