我想在其他线程中使用Android Volley库发出请求。
我的意思是,线程中存在连接,UI线程中处理了数据。
我要这样做是因为我有很多连接,要处理的数据很多,现在用户界面被阻止了。
那么,如何在不同的线程中创建和启动连接,然后在UIThread中执行OnResponse()/ OnErrorResponse()?
JsonArrayRequest getReq = new JsonArrayRequest(url,new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("onRESPONSE Synchro -> Produit",response.toString());
PgrBarProducts.setMax(response.length());
percentDisplayProduct.setText("0/"+ PgrBarProducts.getMax());
nbMaxCallNetwork = PgrBarProducts.getMax();
try {
for (int i = 0; i < response.length(); i++) {
JSONObject explrObject = response.getJSONObject(i);
String id = Integer.toString((Integer) explrObject.get("id"));
callOneObject(id, PgrBarProducts, percentDisplayProduct , 1); // appel du product
}
} catch (JSONException e) {
e.printStackTrace(new PrintWriter(stackTrace));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
changeStatutToError();
VolleyLog.d("", "Error: " + error.getMessage());
percentDisplayProduct.setTextColor(Color.RED);
percentDisplayProduct.setTypeface(null, Typeface.BOLD);
percentDisplayProduct.setText("erreur");
waitBarProgressProduct.setVisibility(View.INVISIBLE);
synchroProducts.setVisibility(View.VISIBLE);
}
});
getReq.setRetryPolicy(new DefaultRetryPolicy(60 * 1000,
1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
// Adding request to request queue and start the request
AppController.getInstance().addToAndStartRequestQueue(getReq);
Volley执行的每个网络请求都在后台线程中执行。凌空在幕后照顾这件事。因此,无需在其他线程上执行请求,因为这已经在发生。
另一方面,在UI线程上调用侦听器。
当您写到数据是在UI线程上处理时,您基本上回答了自己的问题。只需将在侦听器内部执行的数据处理移至后台线程/
AsyncTask
即可释放UI线程并防止阻塞。
我试图使用RequestFuture向服务器发出同步请求,但它不起作用。使用异步完成相同的请求时效果良好。 这是我的代码: 我得到一个nullpointerexception: Java语言lang.NullPointerException:尝试调用虚拟方法的java。lang.String组织。json。J主题。com上的null对象引用上的toString()。数学应用程序。所有模块。在com
我正在使用Android截击来发出请求。所以我使用这个代码。我不明白一件事。我在服务器中检查params是否始终为null。我认为GETPARAMS()不工作。我应该做些什么来解决这个问题。
我正在使用截击库。我有以下API urlhttp://example.com/project/contriller/并且需要将json请求作为body发布到它。 如何使用截击发送?
问题内容: 我注意到我的应用程序无法在Pixel 3上运行。我进入android studio并模拟了一些设备,发现它在任何Android Pie(API 28)设备上均不工作,但在其他任何设备上均能正常工作。我在代码中放了一些日志,看来我在Volley使用中没有得到响应。该应用程序本身已加载,但未显示任何数据,并且收到错误消息 E / RecyclerView:未连接适配器;跳过布局 我的代码是
问题内容: 我试图了解线程如何在Java中工作。这是一个简单的数据库请求,返回一个ResultSet。我正在使用JavaFx。 这将返回一个异常: 线程“线程A”中的异常java.lang.IllegalStateException:在FX应用程序线程上不;currentThread =线程A 如何正确实现线程,以便每个数据库请求都在第二个线程而不是主线程中执行? 我听说过要实现Runnable,
我试图理解线程在java中是如何工作的。这是一个返回结果集的简单数据库请求。我正在使用JavaFx。 这将返回一个异常: 线程“thread A”java中出现异常。lang.IllegalStateException:不在FX应用程序线程上;currentThread=ThreadA 如何正确地实现线程,以便在第二个线程而不是主线程中执行每个数据库请求? 我听说过实现Runnable,但如何在r