4
我已经搜索了很多关于此,但无法找到任何解决方案。很长一段时间我一直在使用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 onErrorResponse(VolleyError error) {
Log.e(TAG, "error = " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(jReq);
//onPerformSync() exits before request finished
}
问题 - 因此,我怎么做SyncAdapter
等到网络响应由排球收到?