【发布时间】:2019-03-04 14:23:49
【问题描述】:
我开始查看 firebase 远程配置,阅读了文档并创建了一个简单的测试应用程序来了解缓存的工作原理,但我并不清楚其行为。
在下面的代码中,每次我更改 welcome_message 属性并单击 fab 按钮时都会获取该属性的新值,我希望只有在缓存过期后才能获取新值。
public class MainActivity extends AppCompatActivity {
private FirebaseRemoteConfig remoteConfig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(this::fabClickListener);
remoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(false)
// .setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
remoteConfig.setConfigSettings(configSettings);
remoteConfig.setDefaults(R.xml.firebase_remote_properties);
}
private void fabClickListener(View view) {
String welcomeMessage = remoteConfig.getString("welcome_message");
Snackbar.make(view, welcomeMessage, Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
remoteConfig.fetch(60_000)
.addOnFailureListener(exception -> Toast.makeText(this, "Fetch Failed", Toast.LENGTH_SHORT).show())
.addOnSuccessListener(result -> {
Toast.makeText(this, "Fetch Succeeded", Toast.LENGTH_SHORT).show();
remoteConfig.activateFetched();
})
.addOnCanceledListener(() -> Toast.makeText(this, "Fetch Canceled", Toast.LENGTH_SHORT).show());
}
...
}
检查我看到的fetch 文档
为识别当前应用实例,获取请求会创建一个 Firebase 实例 ID 令牌,该令牌会定期向 Firebase 后端发送数据
每次新的fetch 调用都会创建一个新ID?定期请求是如何工作的?我希望只调用一次 fetch 并在请求过时的属性值或类似的东西时自动发送请求
【问题讨论】:
-
我不完全理解这个问题。你是说每次调用
fabClickListener,都会显示Toast.makeText(this, "Fetch Succeeded"? -
您好@FrankvanPuffelen 实际上每次都会显示吐司,但这不是这里的问题,我希望即使从缓存中获取值也会调用成功侦听器。我遇到的问题是总是获取新属性,因此我看到带有
welcome_message新值的 Toast 消息(在获取后的下一次单击中),即使缓存应该仍然有效
标签: android firebase firebase-remote-config