我这样做:
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 来自定义此行为
我是一名优秀的程序员,十分优秀!