我有一个为我的RecyclerView下载数据的加载程序。我已将SwipeReftesh添加到此列表中,例如,向下滑动几次,我不知道会发生什么。以前的装载机会死掉还是会存储在内存中?看起来像这样:

refreshLayout.setOnRefreshListener(new OnRefreshListener() {
      @Override
      public void onRefresh() {
        initializeDiscoverLoader();
        refreshLayout.setRefreshing(false);
      }
    });


  private void initializeDiscoverLoader() {
    LoaderManager loaderManager = getLoaderManager();
    loaderManager.initLoader(R.integer.MOVIE_LOADER_DISCOVER_ID, null, MovieActivity.this);
  }

最佳答案

RefreshLayout仅显示进度指示器并调用应用程序的回调方法。您在回调方法中执行的操作与RefreshLayout没有关系。因此,如果您有任何先前的加载程序已在运行,它们将一直运行直到完成。

使用相同的加载器对象加载数据始终是一件好事。这样,在任何给定时间只能运行一个加载程序对象。您不会同时运行许多加载程序对象。

另外,您已经在refreshLayout.setRefreshing(false)内使用了onRefresh(),因为onRefresh()完全执行后,Android会自行调用它。

参考-来自文档-


当用户做出滑动手势时,系统将显示进度指示器并调用应用程序的回调方法。您的回调方法负责实际更新应用程序的数据。
当用户通过响应刷新手势中所述的轻扫操作触发刷新时,无需调用setRefreshing()

07-26 09:29