我正在使用 Firebase Remote Config 来获取远程数据,我的应用需要从第一次启动时获得最新数据。
我正在我的应用程序的 onCreate()
中进行抓取和更新:
mFirebaseRemoteConfig.fetch(cacheExpiration)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
mFirebaseRemoteConfig.activateFetched();
}
}
});
并读取值:
myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);
- 第一次提取工作正常(
activateFetched()
成功触发),但它返回remote_config_defaults
值而不是发布的远程配置。 - 第二次获取,甚至在几秒后,返回远程值。
- 之后,以下提取将受制于 cacheExpiration 规则(完全可以)。
知道为什么在第一次调用时没有获取我的远程值吗?
最佳答案
听起来您忽略了获取远程参数的异步性质。 onComplete()
回调在向 Firebase 服务器发送请求并收到回复后触发。这将花费几分之一秒,甚至更多。
如果你的语句使用获取的值:
myValue = mFirebaseRemoteConfig.getBoolean(Constants.FIREBASE_REMOTE_MY_VALUE);
跟随调用 fetch()
并且不在 onComplete()
回调中,它将在配置数据被调用之前执行已收到。第二个调用似乎只是工作,因为已经过了足够的时间让第一个调用完成并且它获取和激活的数据存在。
关于android - Firebase 远程配置 - 初始提取返回本地默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42328144/