如果我创建新的装载机,以前的装载机是否会死掉或将它们存储在内存中?
问题描述:
我有一个加载程序,它为我的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没有任何关系。所以,如果你有任何以前的装载机已经运行,他们将继续运行,直到他们完成。
使用相同的加载器对象来加载数据总是好的。这样,在任何给定的时间只有一个加载器对象会运行。你不会有很多加载器对象同时运行。
此外,您在onRefresh()
中使用了refreshLayout.setRefreshing(false)
,这是不需要的,因为当onRefresh()
已完全执行时,Android自己调用它。
参考 - 从技术文档 -
当用户滑动手势,系统会显示进度指示器,并调用您的应用程序的回调方法。你的回调方法负责实际更新应用程序的数据。
当用户触发与刷卡动作的刷新在响应刷新手势描述,你不需要调用setRefreshing()