Volley中listener导致的内存泄露
来源:互联网 发布:c语言 eof 编辑:程序博客网 时间:2024/05/28 23:19
项目中用Volley作为http框架,封装了一个JsonRequest,性能优化的时候,LeakCanary一直提示Volley的listener内存泄露,检查了很久也没发现哪里出现内存泄露
public class JsonRequestImpl extends JsonRequest<JSONObject > { public JsonRequestImpl(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super( method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, errorListener); } public JsonRequestImpl(String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { this( jsonRequest == null ? Request.Method.GET : Request.Method.POST, url, jsonRequest, listener, errorListener); } /** * @param response * @return */ @Override protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } /** * 设置超时 * @return */ @Override public RetryPolicy getRetryPolicy() {//设置超时 RetryPolicy retryPolicy= new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); return retryPolicy; } /** * 设置header * @return * @throws AuthFailureError */ @Override public Map<String, String> getHeaders() throws AuthFailureError {//添加header Map<String,String> map=new HashMap<String,String>(); map.put("Accept", "application/json"); map.put("Content-Type", "application/json; charset=UTF-8"); return map; }}
获取Volley请求队列的时候requestQueue = Volley.newRequestQueue(context.getApplicationContext());并没有直接传进Activity实例进来,而是使用全局唯一的context上下文。
发送请求的时候加TAG,界面离开前台的时候直接在onPause里边取消标记为TAG的网络请求。
还是找不到内存泄露的原因,网上查了下资料,说是Volley自己的一个小bug
原来使用的Volley版本是:
compile 'eu.the4thfloor.volley:com.android.volley:2015.01.06'
改为compile 'com.mcxiaoke.volley:library:1.0.19'
后果然就不再提示内存泄露的问题了
unofficial mirror (with some minor bugfix) for volley.
点击打开链接
1 0
- Volley中listener导致的内存泄露
- Volley导致内存泄露
- fork 导致的内存泄露
- Flex 中可能导致内存泄露的地方
- JNI接口中jstring导致内存泄露问题的解决
- Flex 中可能导致内存泄露的地方
- Android-Fragment中TextView.setFocusable(true)导致的内存泄露
- Android-Fragment中TextView.setFocusable(true)导致的内存泄露
- Android中Handler使用不当导致内存泄露的问题
- android开发中,可能会导致内存泄露的问题
- 【转】android开发中,可能会导致内存泄露的问题
- Activitys中使用线程导致的内存泄露
- android开发中,可能会导致内存泄露的问题
- android开发中,可能会导致内存泄露的问题
- Android开发,中可能会导致内存泄露的问题
- volley中的内存泄露
- 内存泄露导致的内存溢出
- 内存泄露导致的内存溢出
- JAVA字符串转日期或日期转字符串
- android studio 导入lib和so
- Qt 飞机仪表显示
- 流量加速插件 FinalSpeed介绍及一键安装教程
- 最小二乘法曲线拟合
- Volley中listener导致的内存泄露
- POI导出数据库数据到excel
- POJ 3723Conscription
- [php]使用curl扩展post多维数组问题
- 【剑指offer-Java版】22栈的压入弹出序列
- Android studio 导入依赖工程(导入其他工程作为lib)
- 关于调整input里面的输入光标大小
- Eclipse中预设(Androidd)工程的编码格式规范
- Word Flow for iOS输入法正式发布