Firestore 会在每次打开片段时拉取文档吗?



我有一个Android食品订购应用程序,我可以向用户显示每家餐厅的菜单。然后,用户可以下订单,这会通知相应的餐厅老板。在应用程序中,假设有 5 家餐厅,每家餐厅有 50 种食品。

每个食品项目都是一个文档,我使用FirestoreRecyclerViewAdapter获得菜单,如下所示:

private void createQueriedRecyclerView(Query query) {
FirestoreRecyclerOptions<ModelFoodItem> options = new FirestoreRecyclerOptions.Builder<ModelFoodItem>()
.setQuery(query, ModelFoodItem.class)
.build();  //get query into the adapter
mMenuAdapter = new FoodAdapter(options, v.getContext());
mMenuRecyclerView = v.findViewById(R.id.recyclerViewFoods);
mMenuRecyclerView.setHasFixedSize(true); //just for performance reasons
mMenuLayoutManager = new LinearLayoutManager(getContext());
mMenuRecyclerView.setLayoutManager(mMenuLayoutManager);
mMenuRecyclerView.setAdapter(mMenuAdapter);
mMenuRecyclerView.setItemAnimator(new DefaultItemAnimator());
mMenuAdapter.startListening();
}`

用户在搜索要订购的东西时自然会在每家餐厅之间循环。我的问题是:每次打开片段时,Firestore 都会拉动文档吗?如果是这样,我非常担心这里的定价。菜单只需要加载一次,有没有办法缓存它,这样我就不会在用户杀死并使用相同的菜单再次重新启动片段时每次调用文档读取?

也许我不应该在每次片段被杀死时都调用 MenuAdapter.stopListening((。它会影响性能,但每个菜单只会加载一次,是这样吗?

您有什么建议将文档读取率保持在尽可能低的水平,并可能缓存读取值以免再次读取?

提前致谢

Firestore 客户端 SDK 已经为您缓存了文档,因此如果之前读取了文档,则不会花费读取费用,并且在脱机时也可以使用。 请阅读有关此内容的文档。

最新更新