我刚刚将泄漏金丝雀2添加到我的应用程序build.gradle中,如官方文件中所描述的
dependencies {
// debugImplementation because LeakCanary should only run in debug builds.
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2'
}现在,当我运行我的应用程序并检查logcat时,我可以找到
2020-03-22 18:20:31.858 2401-2401/? D/LeakCanary: Installing AppWatcher所以安装成功了。
但这就是我所需要的一切吗?或者,我还必须使用AppWatcher.objectWatcher.watch手动监视对象吗?对我来说还不清楚。目前没有问题是由LeakCanary向我报告,但我怀疑我所做的一切都是完美的。
发布于 2020-03-22 17:54:20
是也不是。
是的,它将自动检测泄漏的Activity、Fragment、Fragment视图(从片段的onCreateView方法返回的View )和ViewModel实例( 文档 for Config和来源 for AndroidXFragmentDestroyWatcher),而不需要手动监视这些对象。
不,它不会自动检测到任何其他对象的泄漏实例。对于这些,你需要手动观察它们。例如,文档中的这个食谱描述了如何让LeakCanary监视泄漏的Service实例。
还请注意,如果应用程序是可见的,它将不会触发堆转储,直到它检测到5个保留的对象。将应用程序放在后台将触发转储立即发生,但同时它将显示一个通知(博士)。
发布于 2020-03-22 17:35:14
的确,就是这样!或者根据医生的说法就是这样!
就是这样,根本不需要修改代码!您可以通过对Logcat中的LeakCanary标记进行筛选来确认LeakCanary在启动时运行:
D LeakCanary: Installing AppWatcher
我在生产项目中使用了LeakCanary (在开发期间)。在与LC一起使用应用程序一段时间之后,您将得到一个显示使用结果的通知。如果您错过了该通知,那么您可以从应用快捷菜单中打开泄漏活动。
https://stackoverflow.com/questions/60802584
复制相似问题