android– 使用Volley和Sync Adapter

android– 使用Volley和Sync Adapter,第1张

概述我已经搜索了很多关于这个,但找不到任何解决方案.我一直在使用Volley来处理我的网络通信.最近我决定使用SyncAdapter将我的数据同步到服务器.在onPerformSync()方法中,我以为我会使用Volley将数据发送到服务器,因为Volley很容易发出GET,POST请求.问题–SyncAdapter和Volley都使

我已经搜索了很多关于这个,但找不到任何解决方案.我一直在使用Volley来处理我的网络通信.最近我决定使用SyncAdapter将我的数据同步到服务器.在onPerformSync()方法中,我以为我会使用Volley将数据发送到服务器,因为Volley很容易发出GET,POST请求.

问题 – SyncAdapter和Volley都使用自己独立的线程.因此,当我从onPerformSync()方法内部发起Volley请求时,SyncAdapter不会等待Volley请求完成并在收到Volley的onResponse()或onErrorResponse()回调之前完成同步.第一次调用成功返回后,我需要在SyncAdapter内进行进一步的网络调用.

示例代码 –

@OverrIDe    public voID onPerformSync(Account account, Bundle extras, String authority,                              ContentProvIDerClIEnt provIDer, SyncResult syncResult) {        JsonObjectRequest jReq = new JsonObjectRequest(Method.POST, url, data,            new Response.Listener<JsONObject>() {                @OverrIDe                public voID onResponse(JsONObject response) {                    Log.i(TAG, "response = " + response.toString());                }            },            new Response.ErrorListener() {                @OverrIDe                public voID one rrorResponse(VolleyError error) {                    Log.e(TAG, "error = " + error.getMessage());                }            });        AppController.getInstance().addToRequestQueue(jReq);      //onPerformSync() exits before request finished       }

问题 – 那么如何使SyncAdapter等到Volley收到网络响应?

解决方法:

发出同步截击请求.

RequestFuture<JsONObject> future = RequestFuture.newFuture();JsonObjectRequest request = new JsonObjectRequest(URL, null, future, future);requestQueue.add(request);

然后使用:

try {  JsONObject response = future.get(); // this will block (forever)} catch (InterruptedException e) {  // exception handling} catch (ExecutionException e) {  // exception handling}

代码来自:Can I do a synchronous request with volley?

总结

以上是内存溢出为你收集整理的android – 使用Volley和Sync Adapter全部内容,希望文章能够帮你解决android – 使用Volley和Sync Adapter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1119433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存