我在https://github.com/nostra13/Android-Universal-Image-Loader使用了nostra13的通用图像加载器。我的问题是:
我有这些课程
PhotoActivity extends FragmentActivity
ImageFragment extends Fragment
我使用imageLoader
初始化ImageFragment
中的imageLoader = ImageLoader.getInstance();
,在此片段中,我还使用imageLoader.displayImage(...)
显示了一些图像。
当我的PhotoActivity
停止时(onStop()
被调用),我的ImageFragment
也会停止,这会停止任何图片加载,因为我在{{{{}}中调用了imageLoader.stop()
1}}方法。但是,情况并非如此,它给了我NullPointerException,因为之后调用onStop()
的{{1}},此方法此时调用onLoadingComplete()
ImageLoadingListener()
,因为片段脱离了它的活动。
getActivity()
应该停止每个加载过程,不是吗?
答案 0 :(得分:0)
ImageLoader使用ExecutorService
作为任务池。 ImageLoader.stop()只执行具有下一个Java文档的ExecutorService.shutdown():
启动有序关闭,其中先前提交的任务已执行,但不会接受任何新任务。如果已经关闭,调用没有其他影响。
此方法不会等待先前提交的任务完成执行。
没有保证在shutdown()
之后立即关闭活动任务。也许使用shutdownNow()
对于那种情况是更好的选择(我会考虑它),但它仍然不能保证立即关闭任务。
所以在这个时刻你应该检查getActivity()
。但我会考虑在ImageLoader停止后阻止触发回调。也许在下一个版本中。