1

我在https://github.com/nostra13/Android-Universal-Image-Loader使用来自 nostra13 的通用图像加载器。我的问题是:

我有这些课程

PhotoActivity extends FragmentActivity

ImageFragment extends Fragment

imageLoader我在ImageFragmentusingimageLoader = ImageLoader.getInstance();和这个片段中初始化了,我还使用imageLoader.displayImage(...).

当我PhotoActivity停止(onStop()被调用)时,我ImageFragment也会停止,这应该会停止任何图像加载,因为我调用imageLoader.stop()了该onStop()方法。但是,情况并非如此,它给了我 NullPointerException 因为onLoadingComplete()之后ImageLoadingListener()被调用,并且这个方法调用在getActivity()null一点上,因为片段已与其活动分离。

imageLoader.stop()应该停止每个加载过程,不是吗?

4

1 回答 1

0

ImageLoaderExecutorService用作任务池。ImageLoader.stop() 只需执行 ExecutorService.shutdown() 即可,其中包含下一个 Java 文档:

启动有序关闭,其中执行先前提交的任务,但不会接受新任务。如果已经关闭,调用没有额外的效果。

此方法不等待先前提交的任务完成执行。

不保证活动任务会在shutdown(). 对于这种情况,也许使用 ofshutdownNow()是更好的选择(我会考虑一下),但它仍然不能保证立即关闭任务。

所以此时无论如何你应该检查一下getActivity()。但我会考虑在 ImageLoader 停止后防止触发回调。也许在下一个版本中。

于 2012-09-25T12:42:55.380 回答