You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11下StrictMode的detectLeakedClosableObjects()持续触发问题排查

问题原因

这不是你的操作错误,是Android 11(API 30)官方x86/x86_64模拟器镜像本身的系统级BUG,和你的应用代码、开发环境无关联。
该泄露属于模拟器系统底层未正确释放Closeable资源导致的误报,并非你的应用代码产生的资源泄露,因此你清空应用代码、更换Android 11镜像架构都无法解决,而低版本Android 8.1镜像、Android 11真机、更高版本Android系统的模拟器都不会出现该问题。

可行的解决方案

  • 针对Android 11模拟器做特殊适配,开启StrictMode时跳过该版本的模拟器:
// 判断是否是Android 11的官方模拟器
val isAndroid11Emulator = Build.VERSION.SDK_INT == Build.VERSION_CODES.R 
                        && Build.MODEL.contains("sdk_gphone")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && !isAndroid11Emulator) {
    StrictMode.setVmPolicy(
        StrictMode.VmPolicy.Builder()
            .detectLeakedClosableObjects()
            .penaltyLog()
            .penaltyDeath()
            .build()
    )
}
  • 更换其他版本的模拟器做Closeable泄露检测,可选择Android 12及以上版本的模拟器,或者直接使用Android 11真机测试。
  • 如果必须使用Android 11模拟器调试,可临时关闭penaltyDeath()配置,仅保留penaltyLog()输出日志,过滤掉系统层的泄露报错即可。

内容的提问来源于stack exchange,提问作者Tobias Hellmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:06:05