如果我创建新的加载器,以前的加载器会死掉还是会存储在内存中?

Do previous Loaders die or will they be stored in memory if I create new ones?

我有一个 Loader 可以为我的 RecyclerView 下载数据。我已将 SwipeReftesh 添加到此列表中,但我不知道如果我向下滑动几次会出现什么情况,例如,几次。以前的 Loader 会死掉还是会存储在内存中?它看起来像这样:

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 无关。因此,如果您之前有任何加载器已经 运行ning,它们将保持 运行ning 直到它们完成。

使用相同的加载器对象加载数据总是好的。这样,在任何给定时间只有一个加载程序对象 运行 。您不会同时拥有多个加载器对象 运行ning。

此外,您在 onRefresh() 中使用了 refreshLayout.setRefreshing(false),这不是必需的,因为 Android 在 onRefresh() 完全执行后调用它自己。

参考 - 来自文档 -

  1. 当用户做出滑动手势时,系统会显示进度指示器并调用您应用的回调方法。您的回调方法负责实际更新应用程序的数据。

  2. 当用户使用响应刷新手势中描述的滑动动作触发刷新时,您不需要调用 setRefreshing()