Android:将Http请求响应的一部分保存到类变量

时间:2018-11-01 18:58:40

标签: java android httprequest android-volley httpresponse

我有一个听起来很琐碎的问题,但是我遇到了困难。我正在构建一个应用程序,需要向服务器发出请求(此刻正在使用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 {
        // ...
    }
}

我环顾四周,我唯一能找到的就是有人建议同步进行通话,这会使我的应用短暂冻结,并且不会被喜欢,这是我希望避免的,总体上听起来不太合适。抱歉,这对我来说是一个微不足道的问题。

1 个答案:

答案 0 :(得分:0)

您可以在后台服务中设置methodThatMakesTheRequest并定期对其进行调用,并在服务类内部设置public static String varIWantToChange,然后在代码中的任何位置进行检查

if(ServiceClass.varIWantToChange.equals("a"){
        // ...
 } else {
        // ...
}