【发布时间】:2016-05-28 16:00:57
【问题描述】:
我正在尝试实现 Firebase 远程配置:
override fun onCreate(savedInstanceState: Bundle?) {
val configSettings = FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(BuildConfig.DEBUG).build()
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance()
mFirebaseRemoteConfig.setConfigSettings(configSettings)
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults)
fetchRemoteConfig()
}
private fun fetchRemoteConfig() {
var cacheExpiration = 3600L
if (mFirebaseRemoteConfig.info.configSettings.isDeveloperModeEnabled) {
cacheExpiration = 0L
}
mFirebaseRemoteConfig.fetch(cacheExpiration)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d(TAG, "Remote config fetch succeeded")
mFirebaseRemoteConfig.activateFetched()
} else {
Log.d(TAG, "Remote config fetch failed - ${task.exception?.message}")
}
setupView()
}
}
private fun setupView() {
val text = mFirebaseRemoteConfig.getString("my_text")
//...
}
我的问题是 OnCompleteListener 并不总是被调用。 如果我多次关闭/打开我的应用程序,setupView() 并不总是被触发。
应该始终调用 OnCompleteListener 对吗?即使我正在访问缓存?
编辑:即使我禁用开发模式,行为也是一样的。有时会触发回调,有时不会。
【问题讨论】:
-
我也有同样的问题..但是当然调试不能进去看看发生了什么,我不知道如何打开日志记录。
-
对于它的价值.. 似乎在您看到此日志消息“FirebaseInstanceId:主题同步成功”之前不会调用 oncomplete,然后对 fetch 的后续调用将起作用。
-
@danb 你在哪里触发了 fetch() ?在 onCreate()、onResume()、其他地方?因为我将 fetch() 移到了 onResume() 中,现在它似乎可以工作了。顺便说一句,我像您这样的解决方法正在工作,因为它们延迟了触发 fetch() 的那一刻。如果我们提前调用 fetch() 可能无法检索远程配置。
-
在 onCreate.. 我们的配置在由我们的 DI 框架创建的单例中管理,发生在 Application onCreate
标签: android firebase firebase-remote-config