【发布时间】:2021-03-22 10:01:39
【问题描述】:
其中一个第三方 SDK 通过保留对两个不同活动的引用导致我的应用程序出现内存泄漏。我试图用expectWeaklyReachable 忽略这些泄漏,这是我的设置:
这是我的设置:
val ignoredClasses = listOf(
"com.example.MyLeakingActivity",
"com.example.MyLeakingActivity2"
)
val watchersToInstall = AppWatcher.appDefaultWatchers(application, object : ReachabilityWatcher {
override fun expectWeaklyReachable(watchedObject: Any, description: String) {
if (ignoredClasses.contains(watchedObject::class.java.name)) return
AppWatcher.objectWatcher.expectWeaklyReachable(watchedObject, description)
}
})
AppWatcher.manualInstall(
application = application,
watchersToInstall = watchersToInstall
)
问题在于,使用此配置 LeakMemory 会报告这些活动中所有 Fragment 和 ViewModel 的内存泄漏!! (因为它们的宿主 Activity 仍在内存中)。我必须提供一个非常广泛的忽略列表,列出可以在这些活动中使用的所有 Fragment 和 ViewModel。
如何设置 LeakCanary 来解决这个问题?
【问题讨论】:
标签: leakcanary