android 数据解析报的时候内存溢出

图片说明

public class ResponseUtils {

private Gson gson  = new GsonBuilder()
        .setLenient()
        .registerTypeAdapter(BaseAlertEntity.class,new BaseAlertModuleAdapter())
        .create();
private JsonObject jsonObject;

// private String jsonStr;

public boolean isSuccess() {
    if (jsonObject == null || jsonObject.get("success") == null) {
        return false;
    }
    return jsonObject.get("success").getAsBoolean();
}

public ResponseUtils(String jsonStr) {
    super();
   // this.jsonStr = jsonStr;

    if (jsonStr != null) {
        jsonStr = jsonStr.trim();
    }
    JsonReader reader = new JsonReader(new StringReader(jsonStr));
    reader.setLenient(true);
    try {
        jsonObject = gson.fromJson(reader, JsonObject.class);
    } catch (Exception e) {
        e.printStackTrace();
        jsonObject = null;
    }finally {
        try {
            if(reader!=null){
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

public boolean isExipired() {
    if (jsonObject == null || jsonObject.get("code") == null) {
        return true;
    }
    return jsonObject.get("code").getAsInt() == 600;
}
public boolean isSucess() {
    if (jsonObject == null || jsonObject.get("result") == null) {
        return false;
    }

    return jsonObject.get("result").getAsBoolean();
}
public int getResponseCode() {
    return jsonObject.get("code").getAsInt();
}

public <T> T onFailedModel(Class<T> faild) {
    if (jsonObject == null || jsonObject.get("result") == null) {
        return null;
    }
    JsonReader reader = new JsonReader(new StringReader(jsonObject.get("result").toString()));
    reader.setLenient(true);
    try {
        return gson.fromJson(reader, faild);

    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }finally {
        try {

         //   jsonObject=null;
            if(reader!=null){
                reader.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

/**
 * 不是数组的泛型
 */
public <T> T onSuccessModel(Class<T> success) {
    if (jsonObject == null || jsonObject.get("result") == null) {
        return null;
    }
    JsonReader reader = new JsonReader(new StringReader(jsonObject.get("result").toString()));
    reader.setLenient(true);
    try {

        return  gson.fromJson(reader, success);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }finally {
        try {

         //   jsonObject=null;
            if(reader!=null){
                reader.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

/**
 * 带数组的泛型
 */
public <T> T onSuccessModel(Type typeOfT) {
    if (jsonObject == null || jsonObject.get("result") == null) {
        return null;
    }


    JsonReader reader = new JsonReader(new StringReader(jsonObject.get("result").toString()));
    reader.setLenient(true);
    try {
        return gson.fromJson(reader, typeOfT);
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("JsonFormatError", jsonObject.get("result").toString());
        return null;
    }finally {
        try {

           // jsonObject=null;
            if(reader!=null){
                reader.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

/**
 * Deserialize a json to a arrayList
 */
public <T> ArrayList<T> deserializeToList(Class<T> clazz) {
    if (jsonObject == null || jsonObject.get("result") == null) {
        return null;
    }
    JsonReader reader = new JsonReader(new StringReader(jsonObject.get("result").toString()));
    reader.setLenient(true);
    try {
        Type type = new ListParameterizedType(clazz);
        return gson.fromJson(reader, type);
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("JsonFormatError", jsonObject.get("result").toString());
        return null;
    }finally {
        try {
           // jsonObject=null;
            if(reader!=null){
                reader.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public <T> ArrayList<T> deserializeToList(Class<T> clazz,String json) {
    JsonReader reader = new JsonReader(new StringReader(json));
    reader.setLenient(true);
    try {
        Type type = new ListParameterizedType(clazz);
        return gson.fromJson(reader, type);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }finally {
        try {

            if(reader!=null){
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

}

改被回收的对象没有被回收就会造成内存溢出