我正在使用Leak Canary跟踪内存泄漏,并说它已泄露:
ht.a
RecyclerView
和databaseRef.child("questions").child("questionNumber: " + questionNum).child("title").observeSingleEvent(of: .value, with: { snapshot in
print(snapshot.value ?? "")
question.title = (snapshot.value as? String)!
databaseRef.child("questions").childSnapshot(forPath: "questionNumber: " + questionNum).childSnapshot(forPath: "description").observeSingleEvent(of: .value, with: { snapshot in
print(snapshot.value ?? "")
question.desc = (snapshot.value as? String)!
self.questions.append(question)
})
})
是什么?我在MainActivity中没有它们。
答案 0 :(得分:3)
我认为这些依赖项是受过保护的(用随机名称重命名的类以防止逆向工程)。当我在应用中使用Google登录相关内容时,我已经看到了这一点。
Google服务类通常是Pro Guarded。
我希望这会有所帮助。
答案 1 :(得分:3)
这些类是第三方库类。您可以将MainActivity实例作为参数,并传入哪个类的实例属于库。如果没有必要传入Activity,可以使用ApplicationContext作为参数。
答案 2 :(得分:1)
我追踪到这一点,罪魁祸首是谷歌广告。
您提到的课程实际上来自图书馆com.google.ads.interactivemedia.v3:interactivemedia
,其中包含play-services-ads
。
对活动的引用是通过PublisherAdView
的构造函数设置的,我在其中传递了活动上下文。您可能也在自己的应用中使用了类似的广告视图。
作为一种解决方法,我现在将应用程序上下文传递给广告视图,这似乎解决了泄漏:
new PublisherAdView(getContext().getApplicationContext())