我面临一个很奇怪的issue..i内后空填充在排球库onResponse方法字符串值一个ArrayList ...登录内部onResponse ArrayList中的值是显示的ArrayList是不是空的......但是当我做同样的ArrayList中从方法reuturned之前是空的...数组列表被填充凌空onResponse回调方法
private ArrayList<String> getFirmNamesToPopulateSpinner() {
JsonArrayRequest jsonArrayFirmNamesRequest = new JsonArrayRequest(Request.Method.POST, AppConfig.URL_FIRMNAMES,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for(int i=0; i<response.length(); i++){
try {
JSONObject firmObject = response.getJSONObject(i);
String firmName = firmObject.getString(AppConfig.TAG_FIRM_NAME);
firmNamesArrayList.add(firmName);
} catch (JSONException e) {
e.printStackTrace();
}
}
Log.d(debugTag, "return inside onResponse" + firmNamesArrayList);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(debugTag, "response error: " + error.getMessage());
}
});
Log.d(debugTag, "return before adding Request" + firmNamesArrayList);
// Adding request to request queue
VolleySingleton.getInstance().addToRequestQueue(jsonArrayFirmNamesRequest, AppConfig.TAG_FIRMNAMES_REQUEST);
return firmNamesArrayList;
}
任何人都可以解释为什么会出现这种情况?根据lordoku以及搜索bit..i后
的原因是onResonse是一个回调方法,这意味着它将在稍后回调,可能在另一个线程上回调。 jsonArrayFirmNamesRequest不会阻止原始线程wii继续,因此它将是空的。它也不会被请求队列处理。 – lordoku