Android Volley + Loader模式?

hus*_*evo 21 android android-loader android-volley

我有点喜欢Volley框架,但我仍然对它有些怀疑.

例如,Volley如何与Loader模式对齐?由于它的请求是以异步方式处理的,因此在后台调用它并没有多大意义.另一方面,如果我们忽略Loader模式,我们将取消加载并重新加载必要的资源,这有点浪费.

Volley框架如何与Android中的Loaders一起使用?

Bla*_*der 12

Loader几乎可以封装任何东西,包括Volley请求.当你的Loader封装了一个已经为你处理后台工作的框架并在主线程上回调你,比如Volley,你的加载器实现不能继承,AsyncTaskLoader而只能从Loader基类继承.然后,您将在onForceLoad()方法中启动Volley请求.

当你的加载器通过回调将结果返回到主线程时,它只需要通过调用将其推送到Activity/Fragment deliverResult().

您的装载机还需要保留对正在进行的Volley请求的引用,以便能够取消它onStopLoading().只有在离开活动时,才会在屏幕旋转等配置更改时调用onStopLoading().

唯一的缺点是加载器没有内置机制来传播错误,而Volley则有.因此,在Loader内部的Volley错误回调中,您需要传递null结果或发送本地广播以通知Activity/Fragment错误.


Ovi*_*tcu 4

据我所知,我在来源中看到,对您的请求的响应将被缓存,如果服务器发送正确的缓存headers(ETag),并且您第二次尝试GET向同一网址发出请求时,将为您提供来自 的响应cache,而不是Network再次调用 。(默认情况下Volley缓存使用 的请求keyURL

添加RequestsRequestQueue应该从 完成MainThread,因为从后台调用它们是没有意义的Thread