2017-08-23 18 views
3

我有一个加载程序,它为我的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); 
    } 

回答

1

RefreshLayout只是显示进度指示器并调用您的应用程序的回调方法。你在回调方法中做的事情与RefreshLayout没有任何关系。所以,如果你有任何以前的装载机已经运行,他们将继续运行,直到他们完成。

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

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

参考 - 从技术文档 -

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

  2. 当用户触发与刷卡动作的刷新在响应刷新手势描述,你不需要调用setRefreshing()

相关问题