代理拦截器优化,部分线程切换优化

(cherry picked from commit 92dd50d)
1105075896@qq.com 7 years ago
parent 6ff227c9c6
commit 7a5b47300a

@ -9,8 +9,8 @@ android {
applicationId "com.monke.monkeybook"
minSdkVersion 17
targetSdkVersion 26
versionCode 12
versionName "1.3.1"
versionCode 13
versionName "1.3.2"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "pugongying"]
}

@ -17,8 +17,8 @@ public class ProxyManager {
public static boolean proxyState;
public static String proxyHttp;
private static final String proxyHttpMatch = "(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";//http正则表达式
private static final String proxyPackageNameEncode = "代理包名加密key";
public static String packAgeEncode; //加密后的包名
private static final String proxyPackageNameEncode = "代理包名加密key"; //代理包名加密key
public static String packageEncode; //加密后的包名
public static void saveProxyState(boolean state) {
proxyState = state;
@ -29,10 +29,10 @@ public class ProxyManager {
private static void initProxyState() {
try {
packAgeEncode = AESUtil.aesEncode(MApplication.getInstance().getPackageManager().getPackageInfo(MApplication.getInstance().getPackageName(), 0).packageName, proxyPackageNameEncode);
packageEncode = AESUtil.aesEncode(MApplication.getInstance().getPackageManager().getPackageInfo(MApplication.getInstance().getPackageName(), 0).packageName, proxyPackageNameEncode);
} catch (Exception e) {
e.printStackTrace();
System.out.println("=================包名获取失败,可能会影响代理请求功能===========");
System.out.println("=================包名获取失败,可能会影响代理请求功能=================");
}
proxyState = MApplication.getInstance().getSharedPreferences("CONFIG", 0).getBoolean(SP_KEY_PROXY_STATE, PROXY_STATE_DEFAULT);
}
@ -51,6 +51,7 @@ public class ProxyManager {
public static void initProxy() {
initProxyHttp();
initProxyState();
hasProxy();
}
public static boolean hasProxy() {

@ -7,6 +7,7 @@ import org.jsoup.helper.StringUtil;
import java.io.IOException;
import java.net.URLEncoder;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
@ -17,45 +18,28 @@ public class ProxyInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = request(chain,request);
return response;
}
private Response request(Chain chain,Request request) throws IOException{
Response response = null;
Request oldRequest = chain.request();
if (ProxyManager.hasProxy()) { //如果是代理模式则优先请求代理服务器,失败再自行本地请求
Request requestProxy = null;
String url = request.url().toString();
if (!StringUtil.isBlank(url)) {
url = URLEncoder.encode(url, "utf-8");
}
Request.Builder requestProxyBuilder = new Request.Builder()
.url(ProxyManager.proxyHttp);
requestProxyBuilder.headers(request.headers());
requestProxyBuilder.header("proxyUrl", url)
.header("proxyPackagename",ProxyManager.packAgeEncode);
if(request.method().equalsIgnoreCase("get")){
requestProxyBuilder.get();
}else{
requestProxyBuilder.post(request.body());
//获取request的创建者builder
Request.Builder builder = oldRequest.newBuilder();
String oldUrl = oldRequest.url().toString();
if (!StringUtil.isBlank(oldUrl)) {
oldUrl = URLEncoder.encode(oldUrl, "utf-8");
}
requestProxy = requestProxyBuilder.build();
HttpUrl newBaseUrl = HttpUrl.parse(ProxyManager.proxyHttp).newBuilder()
.setQueryParameter("proxyUrl",oldUrl)
.setQueryParameter("proxyPackagename",ProxyManager.packageEncode)
.build();
try{
response = chain.proceed(requestProxy);
if(response.isSuccessful()){
Response response = chain.proceed(builder.url(newBaseUrl).build());
if(response.isSuccessful()) {
return response;
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(response!=null){
response.close();
response = null;
}
}
}
response = chain.proceed(request);
return response;
Response oldResponse = chain.proceed(oldRequest);
return oldResponse;
}
}

@ -14,8 +14,7 @@ public interface IEasouApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookInfo(@Url String url);
@ -23,8 +22,7 @@ public interface IEasouApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> searchBook(@Url String url);
@ -32,8 +30,7 @@ public interface IEasouApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookContent(@Url String url);
@ -41,8 +38,7 @@ public interface IEasouApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getChapterList(@Url String url);
}

@ -15,8 +15,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookInfo(@Url String url);
@ -24,8 +23,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> searchBook(@Query("keyword")String content, @Query("pn")int page);
@ -33,8 +31,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookContent(@Url String url);
@ -42,8 +39,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getChapterList(@Url String url);
@ -51,8 +47,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getKindBooks(@Url String url);
@ -60,8 +55,7 @@ public interface IGxwztvApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getLibraryData(@Url String url);
}

@ -13,8 +13,7 @@ public interface ILingdiankanshuApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookInfo(@Url String url);
@ -22,8 +21,7 @@ public interface ILingdiankanshuApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> searchBook(@Query("q") String content, @Query("p") int page, @Query("s") String time);
@ -31,8 +29,7 @@ public interface ILingdiankanshuApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getBookContent(@Url String url);
@ -40,8 +37,7 @@ public interface ILingdiankanshuApi {
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3",
"Accept-Charset:UTF-8",
"Keep-Alive:300",
"Connection:Keep-Alive",
"Connection:close",
"Cache-Control:no-cache"})
Observable<String> getChapterList(@Url String url);
}

@ -237,7 +237,7 @@ public class GxwztvBookModelImpl extends MBaseModelImpl implements IGxwztvBookMo
return analyChapterList(s, bookShelfBean);
}
})
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<WebChapterBean<BookShelfBean>>() {
@Override

@ -143,7 +143,7 @@ public class LingdiankanshuStationBookModelImpl extends MBaseModelImpl implement
return analyChapterList(s, bookShelfBean);
}
})
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<WebChapterBean<BookShelfBean>>() {
@Override

@ -30,7 +30,9 @@ import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
@ -108,12 +110,14 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
for(int i=0;i<bookShelfs.size();i++){
if(bookShelfs.get(i).getNoteUrl().equals(bookShelfBean.getNoteUrl())){
inBookShelf = true;
bookShelfBean.setDurChapter(bookShelfs.get(i).getDurChapter());
bookShelfBean.setDurChapterPage(bookShelfs.get(i).getDurChapterPage());
break;
}
}
return bookShelfBean;
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.compose(((BaseActivity)mView.getContext()).<BookShelfBean>bindUntilEvent(ActivityEvent.DESTROY))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookShelfBean>() {
@ -155,7 +159,7 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
e.onNext(true);
e.onComplete();
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(((BaseActivity)mView.getContext()).<Boolean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SimpleObserver<Boolean>() {
@ -196,7 +200,7 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
e.onNext(true);
e.onComplete();
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(((BaseActivity)mView.getContext()).<Boolean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SimpleObserver<Boolean>() {
@ -285,4 +289,34 @@ public class BookDetailPresenterImpl extends BasePresenterImpl<IBookDetailView>
mView.updateView();
}
}
public static void main(String[] args) {
final BookShelfBean bookShelfResult = new BookShelfBean();
bookShelfResult.setNoteUrl("http://www.gxwztv.com/ba598.shtml");
bookShelfResult.setFinalDate(System.currentTimeMillis());
bookShelfResult.setDurChapter(0);
bookShelfResult.setDurChapterPage(0);
bookShelfResult.setTag("http://www.gxwztv.com");
WebBookModelImpl.getInstance().getBookInfo(bookShelfResult).subscribe(new Observer<BookShelfBean>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("-------------subscribe");
}
@Override
public void onNext(BookShelfBean bookShelfBean) {
System.out.println("-------------next");
}
@Override
public void onError(Throwable e) {
System.out.println("-------------error");
}
@Override
public void onComplete() {
System.out.println("-------------complete");
}
});
}
}

@ -48,7 +48,7 @@ public class ChoiceBookPresenterImpl extends BasePresenterImpl<IChoiceBookView>
temp = new ArrayList<BookShelfBean>();
e.onNext(temp);
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<List<BookShelfBean>>() {
@Override
@ -85,7 +85,7 @@ public class ChoiceBookPresenterImpl extends BasePresenterImpl<IChoiceBookView>
private void searchBook(final long searchTime) {
WebBookModelImpl.getInstance().getKindBook(url, page)
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.compose(((BaseActivity)mView.getContext()).<List<SearchBookBean>>bindUntilEvent(ActivityEvent.DESTROY))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<List<SearchBookBean>>() {
@ -129,7 +129,7 @@ public class ChoiceBookPresenterImpl extends BasePresenterImpl<IChoiceBookView>
bookShelfResult.setDurChapterPage(0);
bookShelfResult.setTag(searchBookBean.getTag());
WebBookModelImpl.getInstance().getBookInfo(bookShelfResult)
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(((BaseActivity)mView.getContext()).<BookShelfBean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SimpleObserver<BookShelfBean>() {

@ -94,13 +94,13 @@ public class ReadBookPresenterImpl extends BasePresenterImpl<IBookReadView> impl
mView.showLoadBook();
getRealFilePath(activity, uri)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<String>() {
@Override
public void onNext(String value) {
ImportBookModelImpl.getInstance().importBook(new File(value))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<LocBookShelfBean>() {
@Override
public void onNext(LocBookShelfBean value) {
@ -211,7 +211,7 @@ public class ReadBookPresenterImpl extends BasePresenterImpl<IBookReadView> impl
e.onComplete();
}
}).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.compose(((BaseActivity) mView.getContext()).<ReadBookContentBean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SimpleObserver<ReadBookContentBean>() {
@Override
@ -233,7 +233,7 @@ public class ReadBookPresenterImpl extends BasePresenterImpl<IBookReadView> impl
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.compose(((BaseActivity) mView.getContext()).<BookContentBean>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new SimpleObserver<BookContentBean>() {
@Override
@ -287,7 +287,7 @@ public class ReadBookPresenterImpl extends BasePresenterImpl<IBookReadView> impl
e.onNext(bookShelf);
e.onComplete();
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<BookShelfBean>() {
@Override
public void onNext(BookShelfBean value) {

@ -65,7 +65,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
e.onNext(temp);
e.onComplete();
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<List<BookShelfBean>>() {
@Override
@ -132,7 +132,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
e.onNext(searchHistoryBean);
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<SearchHistoryBean>() {
@Override
@ -157,7 +157,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
int a = DbHelper.getInstance().getDb().delete(SearchHistoryBeanDao.TABLENAME, SearchHistoryBeanDao.Properties.Type.columnName + "=? and " + SearchHistoryBeanDao.Properties.Content.columnName + " like ?", new String[]{String.valueOf(type), "%" + content + "%"});
e.onNext(a);
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<Integer>() {
@Override
@ -189,7 +189,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
.build().list();
e.onNext(datas);
}
}).subscribeOn(Schedulers.newThread())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<List<SearchHistoryBean>>() {
@Override
@ -264,7 +264,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
final int finalSearchEngineIndex = searchEngineIndex;
WebBookModelImpl.getInstance().searchOtherBook(content, page, (String) searchEngine.get(searchEngineIndex).get(TAG_KEY))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<List<SearchBookBean>>() {
@Override
public void onNext(List<SearchBookBean> value) {
@ -332,7 +332,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
bookShelfResult.setDurChapterPage(0);
bookShelfResult.setTag(searchBookBean.getTag());
WebBookModelImpl.getInstance().getBookInfo(bookShelfResult)
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<BookShelfBean>() {
@Override

@ -133,8 +133,8 @@ public class DownloadService extends Service {
e.onComplete();
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<DownloadChapterBean>() {
@Override
public void onNext(DownloadChapterBean value) {
@ -149,8 +149,8 @@ public class DownloadService extends Service {
e.onComplete();
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<Object>() {
@Override
public void onNext(Object value) {
@ -220,7 +220,7 @@ public class DownloadService extends Service {
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<BookContentBean>() {
@Override
public void onNext(BookContentBean value) {
@ -258,7 +258,7 @@ public class DownloadService extends Service {
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new SimpleObserver<Boolean>() {
@Override
public void onNext(Boolean value) {
@ -309,8 +309,8 @@ public class DownloadService extends Service {
e.onComplete();
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
@ -359,8 +359,8 @@ public class DownloadService extends Service {
}
e.onComplete();
}
}).subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<DownloadChapterBean>() {
@Override
public void onNext(DownloadChapterBean value) {

@ -113,8 +113,8 @@ public class DownloadListPop extends PopupWindow {
e.onComplete();
}
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<DownloadChapterBean>() {
@Override
public void onNext(DownloadChapterBean value) {

Loading…
Cancel
Save