如果我创建新的加载器,以前的加载器会死掉还是会存储在内存中?
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()
完全执行后调用它自己。
参考 - 来自文档 -
当用户做出滑动手势时,系统会显示进度指示器并调用您应用的回调方法。您的回调方法负责实际更新应用程序的数据。
当用户使用响应刷新手势中描述的滑动动作触发刷新时,您不需要调用 setRefreshing()
我有一个 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()
完全执行后调用它自己。
参考 - 来自文档 -
当用户做出滑动手势时,系统会显示进度指示器并调用您应用的回调方法。您的回调方法负责实际更新应用程序的数据。
当用户使用响应刷新手势中描述的滑动动作触发刷新时,您不需要调用 setRefreshing()