它会泄漏吗?自定义单例中的FirebaseAnalytics.getInstance
问题描述:
我完全不理解内存泄漏。我已经创建了定制单用static
方法:它会泄漏吗?自定义单例中的FirebaseAnalytics.getInstance
public static AnalyticsHelper getInstance(Context context) {
return analyticsHelper == null ?
analyticsHelper = new AnalyticsHelper(FirebaseAnalytics.getInstance(context)) :
analyticsHelper;
}
,我想知道如果我在Activity
实例是否会出现内存(活动)泄漏。我不确定,因为其他Firebase工具的作用是ContentProvider
,并且在实例化它们时不需要Context
。 Official docummentation不会帮助我。
答
接受的答案是不正确的。 Firebase Analytics(以及接受Context的所有其他Firebase单身人士)并不拥有您传递给它的相同上下文。它将在幕后使用该对象上的Context.getApplicationContext()
来获得一个真正的单体上下文来保存该对象的生命周期。这是智能Android API的工作方式,需要无限期地保持上下文。
给定代码中唯一的潜在问题是,当从两个不同的线程快速连续调用AnalyticsHelper时,可能会创建两个实例,但这不太可能。
+1对于Doug的答案。 FirebaseAnalytics是单身人士,它绑定到应用程序上下文。应用程序是否保留它并不重要。您可以通过从两个不同的活动或服务和活动中调用FirebaseAnalytics.getInstance()来测试此功能,并且每次都会得到相同的实例。 – djabi