关于volley onResponse中返回的数据无法最为最后返回的解决
来源:互联网 发布:网络服务器搭建 编辑:程序博客网 时间:2024/05/17 05:53
最近在学习volley,无奈在最开始的时候就出现问题了。在request的onResponse中获取的值,不能作为返回的结果,最后返回的结果总是null,但是假如在里面设置断点,进行单步运行,居然就又能正常赋值了。
后来终于找到原因,因为volley的request是异步运行的,所以返回的值很显然是未赋值的,还是初始化的值,
原始代码
如下:
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); StringRequest stringRequest = new StringRequest("http://www.izhangqian.com", new Response.Listener<String>() { @Override public void onResponse(String s) { answer = String.valueOf(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e("TAG", volleyError.getMessage()); } }); requestQueue.add(stringRequest); Log.e("TAG", answer);
上述代码会在log中打出null,也就是answer的初始化值。
解决办法
在stackoverflow上找到了解决办法,传送门
话不多说,看到代码就明白了。
public void getJSONObject(final VolleyCallback callback) { JsonObjectRequest objectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject object) { result = object; callback.onSuccess(result); //text_test.setText(object.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e("TAG", volleyError.getMessage()); } } ); requestQueue.add(objectRequest); } private interface VolleyCallback { void onSuccess(JSONObject result); }}
以下是activity中的代码
getJSONObject(new VolleyCallback() { @Override public void onSuccess(JSONObject result) { text_test.setText(result.toString()); } });
注:修改后的代码是获取的json串,道理是同样的。
PS:一个很神奇的事情是,我看到onResponse并不是主线程,但是他的的确确可以修改界面,暂时还不是很了解里边的原因。但是事实上,说的也是其他线程一般不能操作界面,显然volley是那个不一般的。
0 0
- 关于volley onResponse中返回的数据无法最为最后返回的解决
- 对于Volley中onResponse无法返回数据结果的问题解决方法
- 对于Volley中onResponse无法返回数据结果的问题解决方法
- 基于volley,返回数据的封装
- 关于解决无法获取AJAX中无法获取XML返回的问题
- Volley常见问题onResponse Callback的实现
- 关于无法返回的问题
- android 解决volley中StringRequest返回乱码
- Android Studio中使用volley请求数据后返回数据显示乱码的问题
- Volley返回error的判断
- Volley返回乱码的解决方法
- 解决struts无法返回json的方法
- 关于使用Volley网络请求无返回结果的解决办法
- hibernate 无法返回 查询的数据
- C#中返回最后一次插入数据的id(数据库:sql server)
- 关于PHP CURL post数据时数据过大导致无法接收返回信息的处理方法
- 由一个论坛帖子, 解决udp 服务器无法返回数据给第一个客户端的问题
- oracle中LAST_DAY(返回日期的最后一天)
- nodejs中exports与module.exports的区别
- Android与Unity交互以及各种踩的坑
- 使用PHP控制MODBUS-RTU设备
- Struts2基础学习(七)—值栈和OGNL
- Java 集合学习笔记(总述)
- 关于volley onResponse中返回的数据无法最为最后返回的解决
- mysql数据库操作记录
- Java基本概念-过滤器
- 似然函数Likelihood function
- OkHttp的初次使用
- fail树 【Noi2011】 阿狸的打字机 bzoj2434
- iOS 自定义返回按钮,保留系统滑动返回
- linux 进程
- A1080. Graduate Admission (30)