多次调用 FirebaseApp.initializeApp 的缺点?

Downside to calling FirebaseApp.initializeApp more than once?

今天只是一个简单的问题。调用 FirebaseApp.initializeApp 两次有什么缺点吗?

我们使用处理 init 的城市飞艇 sdk,但我们注意到一些崩溃来自后台服务,因为 FirebaseApp.initializeApp 没有被调用。

我的解决方案是将 FirebaseApp.initializeApp 放在我们的应用程序 class 中。只是想确保这不会导致 SDK 发出相同调用的任何问题。

提前致谢!

您可以通过在 Android Studio 中单击命令或控制键来查看 FirebaseApp.initializeApp 的实现:

public static FirebaseApp initializeApp(Context context) {
    Object var1 = LOCK;
    synchronized(LOCK) {
        if (INSTANCES.containsKey("[DEFAULT]")) {
            return getInstance();
        } else {
            FirebaseOptions firebaseOptions = FirebaseOptions.fromResource(context);
            if (firebaseOptions == null) {
                Log.d("FirebaseApp", "Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project.");
                return null;
            } else {
                return initializeApp(context, firebaseOptions);
            }
        }
    }
}

如您所见,如果默认应用程序之前已初始化,则返回其实例,并且不会发生其他任何事情。所以,如果有缺点的话,那就是你刚刚做了不必要的工作。

但是,如果您执行了标准集成,则不必手动调用它,因为它会在启动时通过 ContentProvider 自动调用,该 ContentProvider 将在任何其他 Activity 或服务之前初始化。您可以阅读更多相关信息 in this blog