MainActivity使用泄漏泄漏

时间:2017-02-26 03:32:24

标签: android memory-leaks leakcanary

我正在使用Leak Canary跟踪内存泄漏,并说它已泄露:

ht.a

RecyclerViewdatabaseRef.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中没有它们。

3 个答案:

答案 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())