它会泄漏吗?自定义单例中的FirebaseAnalytics.getInstance

时间:2017-04-25 08:46:22

标签: android firebase memory-leaks firebase-analytics

我仍然完全不了解内存泄漏。我用static方法创建了自定义单例:

public static AnalyticsHelper getInstance(Context context) {
    return analyticsHelper == null ?
            analyticsHelper = new AnalyticsHelper(FirebaseAnalytics.getInstance(context)) :
            analyticsHelper;
}

我想知道如果我在Activity中实例化它是否会发生内存(活动)泄漏。我不确定,因为其他Firebase工具用作ContentProvider并且在实例化时不需要ContextOfficial docummentation无法帮助我。

1 个答案:

答案 0 :(得分:9)

接受的答案不正确。 Firebase Analytics(以及接受上下文的所有其他Firebase单例)不会保留您传递给它的相同上下文。它将在幕后使用Context.getApplicationContext()来获取一个真正的单例上下文来保存对象的生命周期。这是智能Android API的工作方式,需要Context无限期保存。

给定代码中唯一潜在的问题是,当从两个不同的线程快速连续调用时,它可以创建两个AnalyticsHelper实例,但这不太可能。