android - 我如何从 LeakCanary 中排除一个类?

标签 android leakcanary

我这样做:

ExcludedRefs excludedRefs = AndroidExcludedRefs.createAppDefaults()
                .clazz("androidx.lifecycle.ReportFragment")
                .reason("Very annoying report fragment leak that isn't a leak apparently")
                .alwaysExclude()
                .build();
        LeakCanary
                .refWatcher(context)
                .listenerServiceClass(DisplayLeakService.class)
                .excludedRefs(excludedRefs)
                .watchDelay(10, TimeUnit.SECONDS)
                .buildAndInstall();

但我仍然得到 ReportFragment was never GCed but no leak found

我在我的一项 Activity 中也得到了这一点,但我不知道如何处理这些 no leak found 消息。

编辑:当前使用 LeakCanary 1.6.3

最佳答案

我找到了这个;我想我可以试试看

这按预期工作。 在执行堆转储和分析之前,我们无法知道是否排除了泄漏。完成此操作后,默认行为是显示带有 [Excluded] 作为前缀的通知。这让用户知道 LeakCanary 已经完成。如果根本没有反馈,您将无法知道泄漏金丝雀是否完成。这可以说是比完全没有反馈更好的用户体验。

您可以通过提供自己的 com.squareup.leakcanary.AbstractAnalysisResultService 子类而不是使用默认的 com.squareup.leakcanary.DisplayLeakService 来自定义此行为

关于android - 我如何从 LeakCanary 中排除一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598742/

相关文章:

android - 如何频繁更新 ui 元素( TextView )

android - 如何在不同屏幕尺寸的设备上显示相同尺寸的对话框

android - 如何对洛蒂的动画进行更改

android - 绑定(bind)服务泄漏内存

android - 如何使用新的 AndroidProfiler 处理内存泄漏

java - Android 的 Swing 库?

android - 通过 USB 安装应用程序 [安装被用户取消]

android - LeakCanary 发现 Android WebView 内存泄漏

android - 如何在带有模块化代码的 fragment 中使用 LeakCanary 检测内存泄漏?

java - 为什么 AccessibilityManager.sInstance 会导致内存泄漏?