【问题标题】:Does Firestore pull documents each time a Fragment is opened?Firestore 是否会在每次打开 Fragment 时提取文档?
【发布时间】:2019-12-07 08:34:04
【问题描述】:

我有一个 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();
}`

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

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

您对保持文档读取尽可能低并可能缓存读取值以免再次读取它有什么建议?

提前致谢

【问题讨论】:

    标签: android google-cloud-firestore nosql


    【解决方案1】:

    Firestore 客户端 SDK 已经为您缓存了文档,因此如果之前已阅读过该文档,则无需阅读该文档,并且在离线时也可以使用。请阅读documentation 了解此内容。

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2021-09-12
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      相关资源
      最近更新 更多