Volley API是否适合获取应用程序初始配置数据?

时间:2013-08-10 00:16:25

标签: android android-volley

我已成功实施Volley进行网络请求处理。但是,当我的应用程序启动时,它会熄灭并获取所需的配置文件。我想知道Volley是否是获取这个早期初始配置数据的正确选择?是否需要一些时间来实例化队列,缓存等的凌空线程,因此对于这一个初始请求可能是错误的选择?我想得到一些反馈。一方面它是一个很好的选择,因为它的RetryPolicy设置将尝试多次完全填充请求,另一方面,它可能需要一些时间来设置排球请求队列,并且凌空线程运行?我最好只使用AsyncTask发出这个初始请求吗?

3 个答案:

答案 0 :(得分:1)

由于这是一个first请求,我会使用AsyncTask,Volley真的非常好,但这是一个非常重要的过程,在应用程序的开始,也许在那时Volley还不是ready或者会some additional meaningful time执行请求,所以AsyncTask对于这个特定情况更好,而且你将完全控制这个first请求将完成。

编辑:我刚刚看到Ficus Kirkpatrick(Volley图书馆的大师头脑),他说你可以根据需要创建一个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);
                            }
                         }));