下面是报错内容,使用okhttp,的时候报错的.这个不关闭,好像时间久了会报内存溢出错误.
W/OkHttp: A connection to http://172.19.128.64:8061/ was leaked. Did you forget to close a response body?
比如,下面这样解决:
//4.同步人脸库操作 private void faceAsync() { //1.这里去同步照片到人脸库 //String faceUrl="http://172.19.128.73:8060/api/faceDevice/listByIp"; String server_ip = GetConfigValue.getConfigProperties("server_ip"); //String faceUrl="http://172.19.128.64:8061/api/faceDevice/listByIp"; String faceUrl=server_ip + "/api/faceDevice/listByIp"; OkHttpClient faceHttpClient = new OkHttpClient(); Request faceRequest = new Request.Builder() .get() .url(faceUrl) .build(); //构造Call对象 Call faceCall=faceHttpClient.newCall(faceRequest); faceCall.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ToastUtils.toast(HomeActivity.this, "登录二维码获取失败"); } @Override public void onResponse(Call call, Response response) throws IOException { String jsonStr =response.body().string(); //1.将base64,转换为图片 try { respFaceArray=null; //清空一下 JSONObject jsonObj=new JSONObject(jsonStr); respFaceArray =jsonObj.getJSONArray("data"); uiHandler.sendEmptyMessage(111); response.body().close(); } catch (JSONException e) { ToastUtils.toast(HomeActivity.this, "登录二维码获取失败"); response.body().close(); e.printStackTrace(); } } }); }
用一段代码来说明吧,可以看到用完了,response.body().close();
用完以后记得关闭,就行,但是如果,自己对okHttp又封装了一层,或者,找的别人
封装的工具类,记得,去修改,请求成功的地方,用完以后把response.body().close()加上,有很多没加的.
发现其他人写的这个工具类.好多都没有关闭response