我实现了一个Loader,其中在onStopLoader()中,我调用了cancelLoad()方法。但是,尽管进行了上述调用,仍未调用onCanceled()。回调的目的是什么?

在活动中按下主页按钮时,我可以看到Activity的onStop()被调用,并且Loader的onStopLoading()也被调用。

@Override
public void onStopLoading() {
   super.onStopLoading();
   cancelLoad();
   Log.e(LOG_TAG, "onStopLoading()");
}

@Override
public void onCanceled(List<Earthquake> earthquakes) {
   super.onCanceled(earthquakes);
   Log.e(LOG_TAG, "onCancelled()");
}

最佳答案

cancelLoad():尝试取消当前的加载任务。必须在主叫
  进程的线程。


由于onStopLoading()已被调用,因此没有任何要取消的内容,因此永远不会调用回调onCanceled()

请参阅文档中有关cancelLoad()返回值的内容


  如果无法取消任务(通常是因为该任务),则返回false
  已经正常完成[...]


因此,在您的情况下,它应该返回false,因为它已经停止了。

关于android - Android Loader中onCanceled()的作用是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44094643/

10-09 06:02