324234324444 2018-04-28 01:27 采纳率: 25%
浏览 736
已结题

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();
        }
    }
}

}

  • 写回答

1条回答 默认 最新

  • Pink_空白格 2018-04-28 01:51
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能