如何从LeakCanary中排除课程?

时间:2019-02-08 19:04:11

标签: 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

我也从我的一项活动中得知,我不知道该如何处理这些no leak found消息。

编辑:当前使用的是LeakCanary 1.6.3

2 个答案:

答案 0 :(得分:0)

我发现了这个;我以为我可以尝试

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

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

答案 1 :(得分:0)

perf <- performance(pred,"tpr","fpr")
plot(perf,col="grey82",lty=3)
plot(perf,lwd=3,avg="vertical",spread.estimate="boxplot",add=TRUE)