如何正确停止loader?

How to stop loader correctly?

我使用扩展了 Loader 的 class。 得到结果后如何停止加载程序?

当我旋转 phone 我再次得到结果:

@Override
public void onLoadFinished(Loader<Data> loader, Data data) {
      makeWorkWithData();
      //... finish this loader? (or delete result)
}

使用这个:

@Override
public void onLoadFinished(Loader<Data> loader, Data data) {
      makeWorkWithData();
      stopLoader(id);
} 

void stopLoader(int id) {
     getLoaderManager().destroyLoader(id);
}

当需要再次请求时调用getLoaderManager().restartLoader()...

我对 Androids Loaders API 不满意,因为轮换会导致 Loaders 重新开始他们正在做的工作。这就是我使用和创建 Android Retainable Tasks 库的原因。它是轻量级的,基于 Android AsyncTask API 但具有自动轮换处理。您可能想检查一下并使用它代替 Loaders。

https://github.com/NeoTech-Software/Android-Retainable-Tasks

免责声明:我是 Android Retainable Tasks 的作者。