我已成功实施Volley进行网络请求处理。但是,当我的应用程序启动时,它会熄灭并获取所需的配置文件。我想知道Volley是否是获取这个早期初始配置数据的正确选择?是否需要一些时间来实例化队列,缓存等的凌空线程,因此对于这一个初始请求可能是错误的选择?我想得到一些反馈。一方面它是一个很好的选择,因为它的RetryPolicy设置将尝试多次完全填充请求,另一方面,它可能需要一些时间来设置排球请求队列,并且凌空线程运行?我最好只使用AsyncTask发出这个初始请求吗?
答案 0 :(得分:1)
由于这是一个first
请求,我会使用AsyncTask
,Volley真的非常好,但这是一个非常重要的过程,在应用程序的开始,也许在那时Volley还不是ready
或者会some additional meaningful time
执行请求,所以AsyncTask
对于这个特定情况更好,而且你将完全控制这个first
请求将完成。
RequestQueue
或者先创建并保留它像其他代码的Singleton一样,所以听到这个,你应该尝试使用AsyncTask和Volley并检查性能方面的结果是什么,我仍然认为更简单的AsyncTask将比使用Volley更好地完成工作,他还说当然Volley不是必须的,所以我想这是不必要的情况之一。
答案 1 :(得分:1)
如果您发现其功能有用,或者希望与您在其余应用中执行网络请求的方式保持一致,请使用Volley。
您的Volley设置运行所需的时间并不重要。获取配置文件所需的往返时间将为100秒。设置Volley最多需要10s ms。
答案 2 :(得分:0)
如果您想使用AsyncTask
基础架构,但又喜欢轻松创建Volley
请求,请考虑使用droidQuery,其遵循与Javascript
相同的模式请求。例如,要从JSON
获取example.com
,您可以使用简写方法:
$.getJSON("http://www.example.com", null, new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
//TODO handle json
}
});
或简写方法:
$.ajax(new AjaxOptions().url("http://www.example.com")
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
//TODO handle json
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError e = (AjaxError) params[0];
Log.e("$", "Error " + e.status + ": " + e.error);
}
}));