okhttp3 StrictMode Error

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() ,这样就解决了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值