关于Volley请求Android工作室的问题



我只想了解为什么System.out.println("the number test is "+test);在这种情况下不返回3,而是返回0。它是否与凌空抽射请求流有关?谢谢如果我真的把系统println放在另一个没有创建的方法中,比如说在一个点击按钮的方法内部,那么它会打印出3,这就是我想要的

package com.app.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
RequestQueue queue;
int test =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadData();
System.out.println("the number test is "+test);
}
public void loadData()
{
queue= Volley.newRequestQueue(this);
String url =some json url with a json array;
JsonObjectRequest request  = new JsonObjectRequest(Request.Method.GET,url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray(name of json array);
for (int i=0;i<3;i++){
test=test+1;
}
} catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
queue.add(request);
}
}

Volley请求是异步的,这意味着响应侦听器中的代码可能会在稍后执行,而不是立即执行。但你马上就要打印了。您甚至在设置值之前就打印了值。删除打印声明,将其移动到:

@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray(name of json array);
for (int i=0;i<3;i++){
test=test+1;
}
here >>>>>>> System.out.println("the number test is "+test);
} catch (JSONException e){
e.printStackTrace();
}
}

相关内容

  • 没有找到相关文章

最新更新