volley库如何在Android中同步工作?我想当volley从服务器得到响应的时候,程序的执行停止并等待volley的结果。
您可以按以下方式显示该特定时间的加载程序:
public void getResult() {
try {
final ProgressDialog pDialog = new ProgressDialog(HomeActivity.this);
pDialog.setMessage("Loading...");
pDialog.show();
StringRequest sr = new StringRequest(Request.Method.POST, MapAppConstant.API , new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pDialog.dismiss();
Log.d("", ".......response====" + response.toString());
////////
try {
JSONObject object = new JSONObject(response);
String serverCode = object.getString("code");
String serverMessage = object.getString("message");
// Toast.makeText(HomeActivity.this, "" + serverMessage, Toast.LENGTH_SHORT).show();
if (serverCode.equalsIgnoreCase("0")) {
}
if (serverCode.equalsIgnoreCase("1")) {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pDialog.dismiss();
// VolleyLog.d("", "Error: " + error.getMessage());
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(HomeActivity.this, "Timeout Error",
Toast.LENGTH_LONG).show();
} else if (error instanceof AuthFailureError) {
VolleyLog.d("", "" + error.getMessage() + "," + error.toString());
} else if (error instanceof ServerError) {
VolleyLog.d("", "" + error.getMessage() + "," + error.toString());
} else if (error instanceof NetworkError) {
VolleyLog.d("", "" + error.getMessage() + "," + error.toString());
} else if (error instanceof ParseError) {
VolleyLog.d("", "" + error.getMessage() + "," + error.toString());
}
}
}
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("user_language", prefshelper.getUserLanguageFromPreference());
return params;
}
};
sr.setShouldCache(true);
sr.setRetryPolicy(new DefaultRetryPolicy(50000 * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
VolleySingleton.getInstance(HomeActivity.this.getApplicationContext()).addToRequestQueue(sr);
} catch (Exception e) {
e.printStackTrace();
}
}
我试图使用RequestFuture向服务器发出同步请求,但它不起作用。使用异步完成相同的请求时效果良好。 这是我的代码: 我得到一个nullpointerexception: Java语言lang.NullPointerException:尝试调用虚拟方法的java。lang.String组织。json。J主题。com上的null对象引用上的toString()。数学应用程序。所有模块。在com
问题内容: 我对Java同步有疑问。我想知道我的类中是否有三个同步方法,并且一个线程在一个同步方法中获得了锁,另外两个将被锁定吗?我问这个问题是因为我对以下陈述感到困惑。 当线程处于对象的同步方法内部时,希望执行该同步方法或对象的任何其他同步方法的所有其他线程将必须等待。此限制不适用于已经具有锁并正在执行对象的同步方法的线程。这样的方法可以调用对象的其他同步方法而不会被阻塞。当然,任何线程都可以随
我对Java同步有一个疑问。我想知道如果我的类中有三个同步方法,一个线程在一个同步方法中获取锁,其他两个会被锁定吗?我问这个问题是因为我与以下语句混淆了。 当一个线程在一个对象的同步方法内部时,所有希望执行这个同步方法或该对象的任何其他同步方法的其他线程都必须等待。这个限制不适用于已经有锁并正在执行该对象的同步方法的线程。这样的方法可以调用该对象的其他同步方法而不会被阻塞。该对象的非同步方法当然可
问题内容: 自从我开始用Java编程以来,我一直在想(大约一两年)。在C语言中,我们必须知道不同的方法才能正确避免线程之间的死锁,因此在同步方法之间有更多选择。 那么Java呢?当我们同步时,如何避免将线程置于死锁状态?它在内部如何运作?是否可以避免死锁,因为我们在比C(或C ++)更高的级别上进行了同步?关于Java中的死锁和同步的任何文档吗? 问题答案: 在后台,它使用两个操作码和字节码级别,
问题内容: 首先,这是一个示例: 我没有得到的是堵塞如何发生。main函数启动两个线程,每个线程都开始各自的弓箭操作。 “同步”到底阻止了什么?为同一对象运行的功能相同(就像我最初想的那样)?同一类的所有对象具有相同的功能吗?同一对象的所有同步功能?同一类所有对象的所有同步功能? 问题答案: 在Java中,每个函数都提供了在其上锁定或锁定线程的功能。同步方法时,该方法将其对象实例用作锁。在你的示例
问题内容: 如果我有一个带有静态方法的util类,它将调用Hibernate函数来完成基本的数据访问。我想知道是否使该方法是确保线程安全的正确方法。 我希望这可以防止对同一数据库实例的信息访问。但是,我现在确定当特定类调用以下代码时,是否阻止所有类调用以下代码。 问题答案: 为了更一般地解决这个问题… 请记住,在方法上使用同步实际上只是简写(假设类是SomeClass): 是相同的 和 是相同的