同上
- 发布:2026-09-24 10:06
- 更新:2026-09-24 10:06
- 阅读:38
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 无
HBuilderX类型: 正式
HBuilderX版本号: 5.26
手机系统: Android
手机系统版本号: Android 16
手机厂商: 华为
手机机型: 很多
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
同上
同上
实际结果:
同上
同上
bug描述:
我们接入 uni小程序 SDK 后,发现线上大量 ANR 集中在安卓 15/16,小程序暂停时主线程停在以下调用链:
DCUniMPActivity.onPause
→ WebAppActivity.onPause
→ EntryProxy.onPause
→ io.dcloud.unimpv2.m.b
→ System.gc(System.java:1606)
→ Runtime.gc
→ Runtime.nativeGc
已核实的关键证据:
-
新旧组件在暂停流程末尾均有无条件 System.gc()。
-
宿主应用同期将 targetSdk 从 30 升至 35。
-
安卓 15/16 对 targetSdk > 34 的应用,会让 System.gc() 直接调用 Runtime.gc();旧兼容逻辑通常只设置标记,需配合 runFinalization() 才回收。安卓官方源码变更
(https://android.googlesource.com/platform/libcore/+/320a26dfbac1117cf88b2117403da47ca325a821%5E%21/) -
线上堆栈的 System.java:1606 与该新增分支对应。已核查官方 5.24 制品,相关主动 GC 调用仍然保留。
初步判断: 目标版本升级触发系统行为变化,使 SDK 原有暂停逻辑频繁请求 GC,是本次 ANR 上涨的首要嫌疑;尚未完成实机对照验证。
请协助:
- 评估移除暂停主线程中的无条件 System.gc(),或提供关闭该调用的配置。
0 个回复