如果我创建新的装载机,之前的装载机会死掉还是存储在内存中?

时间:2017-08-23 12:56:17

标签: android loader swiperefreshlayout

我有一个Loader,可以为我的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 个答案:

答案 0 :(得分:1)

RefreshLayout只显示进度指示器并调用应用程序的回调方法。你在回调方法中所做的与RefreshLayout无关。因此,如果您之前有任何已经运行的加载器,它们将一直运行直到完成。

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

此外,您已在refreshLayout.setRefreshing(false)内使用onRefresh(),因为当onRefresh()完全执行时,Android会自行调用 <table cellspacing="0"> <thead> <tr> <th>bucketName</th> <th>creationDate</th> <th></th> </tr> </thead> <tbody> <tr ng-repeat="bucket in listBucket"> <td>{{bucket.name}}</td> <td>{{bucket.creationDate}}</td> <td> <a href="/ui/#/buckets" ng-click="getPolicy(bucket.name)"><span class="glyphicon glyphicon-info-sign"></span></a> <a href="/ui/#/buckets" ng-confirm-click confirmed-click="deleteBucket(bucket.name)"><span class="glyphicon glyphicon-remove"></span></a> </td> </tr> </tbody> </table>

参考 - 来自文档 -

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

  2. 当用户按照响应刷新手势中所述触发刷新操作时,您无需调用setRefreshing()