Ath*_*ryl 7 multithreading android android-volley
我有一些麻烦找到关于Volley和response.Listener的一些信息.
基本上我有一个向后端询问数据的操作,在后面的Volley中进行调用(由Volley自己处理),同时它在主线程上调用onResponse.
我是否需要自己运行以在后台处理这些数据,或者有办法强制onResponse在后台运行?
谢谢.
编辑:
这是我正在运行的代码.
private Response.Listener<String> volleyResp = new Response.Listener<String>() {
@override
public void onResponse(final String jsonResp) {
new Thread() {
public void run() {
// Do something ... Insert in DB for example.
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
请仔细阅读我的回复
如果要在与请求相同的线程中"处理"数据,则应该具有Request(或JsonRequest)的子类和实现 parseNetworkResponse(NetworkResponse response)
示例:
public class TotoRequest extends JsonRequest {
@Override
protected Response parseNetworkResponse(NetworkResponse response) {
try {
String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
JSONObject jsonObject = new JSONObject(jsonString);
// Process data here
} catch (UnsupportedEncodingException | JSONException e) {
return Response.error(new ParseError(e));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是对你的问题的回复,但我认为这不是你真正想要的.
如果您的数据很小,那么在主线程中处理数据可能更安全.
如果您的数据很重要,或者您想在数据库中插入/更新它,您应该继续执行您正在执行的操作.
另外,我建议你使用AsyncTask而不是线程.
| 归档时间: |
|
| 查看次数: |
4680 次 |
| 最近记录: |