我有一个Android的食物订购应用程序,在这里我向用户显示每个餐厅的菜单。然后,用户可以下订单,通知相应的餐厅老板。在该应用中,假设每个餐厅有5家餐厅和50种食品。
每个食品项目都是一个文档,我使用FirestoreRecyclerViewAdapter这样获得菜单:
private void createQuerriedRecyclerView(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();
}`
用户在搜索要订购的东西时自然会在每个餐厅中循环。我的问题是:每次打开Fragment时,Firestore都会提取文档吗?如果是这样,我会很担心这里的价格。菜单只需要加载一次,有没有一种方法可以缓存它,所以当用户杀死并使用同一菜单重新启动片段时,我不会每次调用文档读取?
也许我不应该在每次杀死一个片段时调用MenuAdapter.stopListening()。这样会影响性能,但每个菜单只能加载一次,是这样吗?
您有什么建议使文件读取尽可能低,并可能缓存读取值以免再次读取?
预先感谢