okhttp3 StrictMode Error

原创 2016年08月31日 14:25:35

okhttp3 StrictMode Error

使用okhttp3.3过程中遇到以下bug,google了一下也没找到解决办法,现放出自己的解决办法:

E/StrictMode(16877): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
E/StrictMode(16877): java.lang.Throwable: Explicit termination method 'close' not called
E/StrictMode(16877):    at dalvik.system.CloseGuard.open(CloseGuard.java:184)
E/StrictMode(16877):    at java.io.FileOutputStream.<init>(FileOutputStream.java:90)
E/StrictMode(16877):    at okio.Okio.appendingSink(Okio.java:187)
E/StrictMode(16877):    at okhttp3.internal.io.FileSystem$1.appendingSink(FileSystem.java:59)
E/StrictMode(16877):    at okhttp3.internal.DiskLruCache.newJournalWriter(DiskLruCache.java:308)
E/StrictMode(16877):    at okhttp3.internal.DiskLruCache.readJournal(DiskLruCache.java:300)
E/StrictMode(16877):    at okhttp3.internal.DiskLruCache.initialize(DiskLruCache.java:227)
E/StrictMode(16877):    at okhttp3.internal.DiskLruCache.get(DiskLruCache.java:429)
E/StrictMode(16877):    at okhttp3.Cache.get(Cache.java:193)
E/StrictMode(16877):    at okhttp3.Cache$1.get(Cache.java:143)
E/StrictMode(16877):    at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:203)
E/StrictMode(16877):    at okhttp3.RealCall.getResponse(RealCall.java:243)
E/StrictMode(16877):    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201)
E/StrictMode(16877):    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
E/StrictMode(16877):    at okhttp3.RealCall.access$100(RealCall.java:30)
E/StrictMode(16877):    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127)
E/StrictMode(16877):    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
E/StrictMode(16877):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/StrictMode(16877):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/StrictMode(16877):    at java.lang.Thread.run(Thread.java:841)

我的问题就在于 cache 没有及时 close,解决办法很简单:
在 onResponse 和 onFailure 后都加上 cache.close() ,这样就解决了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

StrictMode使用详解

StrictMode        StrictMode最常用来捕捉应用程序的主线程,它将报告与线程及虚拟机相关的策略违例。一旦检测到策略违例(policy violation),你将获得警告,其包含...
  • x359981514
  • x359981514
  • 2015年03月09日 21:20
  • 4504

Android性能调优利器StrictMode

作为Android开发,日常的开发工作中或多或少要接触到性能问题,比如我的Android程序运行缓慢卡顿,并且常常出现ANR对话框等等问题。既然有性能问题,就需要进行性能优化。正所谓工欲善其事,必先利...
  • zjd934784273
  • zjd934784273
  • 2016年08月01日 12:50
  • 1977

Android严苛模式StrictMode使用详解

StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的。举个例子来说,如果开发者在UI线程中进行了...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年06月23日 12:00
  • 10677

StrictMode检测内存泄漏

StrictModeAndroid 2.3(API Level 9) 提供了一个称为严苛模式(StrictMode)的调试特性,Google称该特性已经使数百个Android上的Google应用程序受...
  • Next_Second
  • Next_Second
  • 2017年01月10日 17:52
  • 694

关于 OkHttp 依赖冲突问题的解决过程

OkHttp 是一个流行的开源网络请求库。许多第三方库的底层都是使用 OkHttp 实现网络请求,所以 OkHttp 相关的依赖冲突问题就变得很难避免,下文是我所遇到的一次关于 OkHttp 的依赖冲...
  • llmmll08
  • llmmll08
  • 2016年11月18日 16:03
  • 1828

Android内存泄露分析之StrictMode

StrictMode(严格模式)使用 StrictMode严格模式,主要用来检测程序中违例情况的开发者工具。最常用的场景就是检测主线程中本地磁盘、网络读写等耗时的操作以及Activity泄露等,但该...
  • yincheng886337
  • yincheng886337
  • 2016年01月15日 17:07
  • 1412

网络框架-okhttp

okhttp是什么?简而言之就是一款优秀的网络框架。 能实现的功能?Get、Post请求,文件上传和下载等等….从基本功能的调用,看看一篇关于okhttp的封装:// http Get操作 OkHt...
  • zxyudia
  • zxyudia
  • 2017年03月21日 22:50
  • 356

Android的性能监控工具StrictMode

目前,StrictMode的能力与限制包括: 1.基于线程的对磁盘读写,网络操作,以及自定义耗时操作等的监控; 2.基于VM进程的对对象泄露(Activity对象,SQLite对象,未反注册对象,...
  • berber78
  • berber78
  • 2015年05月12日 14:40
  • 622

Okhttp3再封装,支持上传下载,

最近在做一个新项目,需要一个网络框架,我选择了okhttp3来做。虽然okhttp3已经对网络请求进行了很好的封装,但是不满足项目需要,所以自己就简单进行了二次封装,优化了部分功能,代码量大大减少。下...
  • lixuce1234
  • lixuce1234
  • 2017年06月06日 12:52
  • 266

okhttp3的使用

本文主要讲解okhttp的使用方法,包括get请求,post请求,文件上传下载。 首先要知道,如果我们不设置缓存,okhttp默认是没有做数据缓存的,需要自己手动添加缓存 1.简单的get请求,异...
  • u011394071
  • u011394071
  • 2016年10月23日 16:25
  • 2000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:okhttp3 StrictMode Error
举报原因:
原因补充:

(最多只允许输入30个字)