在Android的后台线程上初始化Firebase安全吗?注意什么?

在Android的后台线程上初始化Firebase安全吗?注意什么?,android,multithreading,firebase,Android,Multithreading,Firebase,在我的设置中,Firebase需要约250ms的初始化时间(在Nexus 5上测量为冷启动时有无FirebaseInitProvider/CrashlyticsInitProvider时的“首次显示时间”差异)。这是一个问题,因为如果没有Firebase,我的应用程序冷启动只需350毫秒,而Firebase的冷启动速度是原来的两倍 我正在考虑禁用默认的FirebaseInitProvider和CrashlyticsInitProvider,它们在应用程序启动之前在主线程上运行,并在后台线程上手动

在我的设置中,Firebase需要约250ms的初始化时间(在Nexus 5上测量为冷启动时有无
FirebaseInitProvider/CrashlyticsInitProvider
时的“首次显示时间”差异)。这是一个问题,因为如果没有Firebase,我的应用程序冷启动只需350毫秒,而Firebase的冷启动速度是原来的两倍

我正在考虑禁用默认的
FirebaseInitProvider
CrashlyticsInitProvider
,它们在应用程序启动之前在主线程上运行,并在后台线程上手动进行初始化(例如,从
application.onCreate()
启动)

问:在后台线程上调用
FirebaseApp.initializeApp()
安全吗?如果是这样,我应该注意什么?我知道,如果在Firebase仍在后台启动时需要(例如,
getUser()
),我必须实现一些锁定,以便我的线程等待它准备就绪。我也不关心准确的屏幕时间报告,所以如果Firebase Analytics延迟注册其活动生命周期回调,这不是问题

另外,
FirebaseApp.initializeApp()
中有一个
synchronized
块,这意味着工程师认为有人会试图从另一个线程调用它。我更担心的是内部,它们不是开源的


另外,我的应用程序是一个单进程应用程序,所以我不太可能多次调用
Application.onStart()
(除非我在这里遗漏了什么)。

您好,您对此能做些什么吗?哦,是的,忘了这个问题。是的,我在后台初始化它,它工作正常。我已禁用内容提供商并按需加载FirebaseApp。好的,谢谢Actine。。。