我有一个听起来很琐碎的问题,但是我遇到了困难。我正在构建一个应用程序,需要向服务器发出请求(此刻正在使用Volley),并将请求返回的值之一保存到发出请求的类中。这样做的目的是在应用程序其他部分的if语句中使用所述值。
正如我所说,我目前正在使用Volley,而我目前所用的是(非常大致)
private String varIWantToChange;
private void methodThatMakesTheRequest(){
RequestQueue queue = Volley.newRequestQueue(context);JsonObjectRequest request = new JsonObjectRequest(serverUrl, null, new Response.Listener<JSONObject>() {
@Overridepublic void onResponse(JSONObject response) {
//if response is not null
//make changes to the UI, I have no problem with that
varIWantToChange = "value extracted from JSONObject response";
}, new Response.ErrorListener() {
// (...)
}
}
queue.add(request);
}
private void methodWhereVarShouldBeChecked(){
//but since I am trying to assign a value to my variable in the async method
//its value only changes in the scope of the new JSONObjectRequest
if(varIWantToChange.equals("a"){
// ...
} else {
// ...
}
}
我环顾四周,我唯一能找到的就是有人建议同步进行通话,这会使我的应用短暂冻结,并且不会被喜欢,这是我希望避免的,总体上听起来不太合适。抱歉,这对我来说是一个微不足道的问题。
答案 0 :(得分:0)
您可以在后台服务中设置methodThatMakesTheRequest并定期对其进行调用,并在服务类内部设置public static String varIWantToChange,然后在代码中的任何位置进行检查
if(ServiceClass.varIWantToChange.equals("a"){
// ...
} else {
// ...
}