zhou-you / RxEasyHttp

本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置,上传下载进度显示,请求错误自动重试,请求携带token、时间戳、签名sign动态配置,自动登录成功后请求重发功能,3种层次的参数设置默认全局局部,默认标准ApiResult同时可以支持自定义的数据结构,已经能满足现在的大部分网络请求。
Apache License 2.0
3.13k stars 615 forks source link

APP开启StrictMode严格模式,报错,这个会引发内存泄露吗? #141

Closed lvkawu closed 5 years ago

lvkawu commented 5 years ago

//APP开启StrictMode严格模式 @TargetApi(9) protected void setStrictMode() { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); } //报错 04-07 17:00:11.742 17784-17791/? E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'close' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at java.io.FileInputStream.(FileInputStream.java:78) at com.jakewharton.disklrucache.DiskLruCache.get(DiskLruCache.java:422) at com.zhouyou.http.cache.core.LruDiskCache.doContainsKey(LruDiskCache.java:112) at com.zhouyou.http.cache.core.BaseCache.containsKey(BaseCache.java:131) at com.zhouyou.http.cache.core.BaseCache.load(BaseCache.java:50) at com.zhouyou.http.cache.core.CacheCore.load(CacheCore.java:60) at com.zhouyou.http.cache.RxCache$2.execute(RxCache.java:176) at com.zhouyou.http.cache.RxCache$SimpleSubscribe.subscribe(RxCache.java:134) at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableOnErrorNext.subscribeActual(ObservableOnErrorNext.java:38) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.drain(ObservableConcatMap.java:475) at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.onSubscribe(ObservableConcatMap.java:330) at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:31) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableFilter.subscribeActual(ObservableFilter.java:30) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableDistinctUntilChanged.subscribeActual(ObservableDistinctUntilChanged.java:35) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableRetryWhen$RepeatWhenObserver.subscribeNext(ObservableRetryWhen.java:151) at io.reactivex.internal.operators.observable.ObservableRetryWhen.subscribeActual(ObservableRetryWhen.java:60) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.Observable.subscribeWith(Observable.java:12319) at com.zhouyou.http.request.GetRequest.execute(GetRequest.java:92) at com.example.okx.net.request.CustomGetRequest.execute(CustomGetRequest.java:34)

zhou-you commented 5 years ago

这个用的就是DiskLruCache,目前用了很久的缓存还没遇到过泄露,只要请求使用完取消订阅就可以

cccfly-bake commented 4 years ago

我也遇到了这个anr,是否在doSave的时候开个线程保存?