diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index f4f39e8..1647e20 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -3,8 +3,9 @@
diff --git a/.idea/misc.xml b/.idea/misc.xml
index a8c1b44..1d77643 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10,26 +34,10 @@
-
+
-
-
-
-
- 1.7
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..8f98d4b
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,742 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1502875016933
+
+ 1502875016933
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 6302d89..55c309d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,18 +22,20 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.0.2'
+
+// compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
+ compile 'io.reactivex.rxjava2:rxjava:2.1.2'
+ compile 'com.trello.rxlifecycle2:rxlifecycle:2.1.0'
+ compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
+ compile 'com.squareup.retrofit2:retrofit:2.3.0'
+ compile 'com.squareup.retrofit2:converter-gson:2.3.0'
+ compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
+ compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
compile 'jp.wasabeef:glide-transformations:2.0.1'
compile 'com.nineoldandroids:library:2.4.0'
- compile 'io.reactivex:rxjava:1.1.6'
- compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.jakewharton:butterknife:7.0.1'
- compile 'com.trello:rxlifecycle:0.6.1'
- compile 'com.trello:rxlifecycle-components:0.6.1'
- compile 'com.squareup.retrofit2:retrofit:2.1.0'
- compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
- compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'cn.finalteam:galleryfinal:1.4.8.7'
compile 'com.liulishuo.filedownloader:library:0.3.2'
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..6795398
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,17 @@
+## Project-wide Gradle settings.
+#
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+#
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+#
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+#Wed Aug 16 17:16:58 CST 2017
+systemProp.http.proxyHost=mirrors.neusoft.edu.cn
+systemProp.http.proxyPort=80
diff --git a/src/main/java/com/corelibs/api/ApiFactory.java b/src/main/java/com/corelibs/api/ApiFactory.java
index cf4a82a..6657506 100644
--- a/src/main/java/com/corelibs/api/ApiFactory.java
+++ b/src/main/java/com/corelibs/api/ApiFactory.java
@@ -31,7 +31,7 @@
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
@@ -207,7 +207,7 @@ public Timestamp deserialize(JsonElement json, Type typeOfT,
}
builder.baseUrl(baseUrl)
- .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gsonBuilder.create()));
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
diff --git a/src/main/java/com/corelibs/api/ResponseTransformer.java b/src/main/java/com/corelibs/api/ResponseTransformer.java
index 0ea4f25..2b41096 100644
--- a/src/main/java/com/corelibs/api/ResponseTransformer.java
+++ b/src/main/java/com/corelibs/api/ResponseTransformer.java
@@ -1,33 +1,29 @@
package com.corelibs.api;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+
+import com.trello.rxlifecycle2.LifecycleTransformer;
+
+import org.reactivestreams.Publisher;
+
+import io.reactivex.Flowable;
+import io.reactivex.FlowableTransformer;
+import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.schedulers.Schedulers;
+import io.reactivex.subscribers.SafeSubscriber;
/**
* 用于对网络请求的Observable做转换.
- *
- * 配合{@link BaseRxPresenter#bindLifeCycle()}一起使用
- * 可以将原始Observable绑定至Activity/Fragment生命周期, 同时声明在IO线程运行, 在main线程接收.
- *
* Created by Ryan on 2015/12/30.
*/
-public class ResponseTransformer implements Observable.Transformer {
-
- private Observable.Transformer transformer;
-
- public ResponseTransformer() {}
-
- public ResponseTransformer(Observable.Transformer t) {
- transformer = t;
- }
+public class ResponseTransformer implements FlowableTransformer {
@Override
- public Observable call(Observable source) {
- if(transformer != null)
- return transformer.call(source).subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread());
- else
+ public Publisher apply(@NonNull Flowable source) {
+
return source.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
diff --git a/src/main/java/com/corelibs/base/BaseActivity.java b/src/main/java/com/corelibs/base/BaseActivity.java
index 6e7b0f1..f802cb8 100644
--- a/src/main/java/com/corelibs/base/BaseActivity.java
+++ b/src/main/java/com/corelibs/base/BaseActivity.java
@@ -14,12 +14,13 @@
import com.corelibs.common.AppManager;
import com.corelibs.utils.ToastMgr;
import com.corelibs.views.LoadingDialog;
-import com.trello.rxlifecycle.ActivityEvent;
-import com.trello.rxlifecycle.FragmentEvent;
-import com.trello.rxlifecycle.components.support.RxAppCompatActivity;
+import com.trello.rxlifecycle2.LifecycleTransformer;
+import com.trello.rxlifecycle2.android.ActivityEvent;
+import com.trello.rxlifecycle2.android.FragmentEvent;
+import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import butterknife.ButterKnife;
-import rx.Observable;
+
/**
* Activity基类, 继承自此类的Activity需要实现{@link #getLayoutId},{@link #init}
@@ -172,20 +173,22 @@ public void hideEmptyHint() {}
public void showEmptyHint() {}
@Override
- public Observable.Transformer bind() {
+ public LifecycleTransformer bind() {
return bindToLifecycle();
}
@Override
- public Observable.Transformer bindUntil(ActivityEvent event) {
+ public LifecycleTransformer bindUntil(ActivityEvent event) {
return bindUntilEvent(event);
}
@Override
- public Observable.Transformer bindUntil(FragmentEvent event) {
+ public LifecycleTransformer bindUntil(FragmentEvent event) {
return null;
}
+
+
/**
* 设置全屏模式,并将状态栏设置为透明,支持4.4及以上系统
*/
diff --git a/src/main/java/com/corelibs/base/BaseFragment.java b/src/main/java/com/corelibs/base/BaseFragment.java
index 90beb58..376f47c 100644
--- a/src/main/java/com/corelibs/base/BaseFragment.java
+++ b/src/main/java/com/corelibs/base/BaseFragment.java
@@ -3,20 +3,19 @@
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.WindowManager;
-import com.trello.rxlifecycle.ActivityEvent;
-import com.trello.rxlifecycle.FragmentEvent;
-import com.trello.rxlifecycle.components.support.RxFragment;
+import com.trello.rxlifecycle2.LifecycleTransformer;
+import com.trello.rxlifecycle2.android.ActivityEvent;
+import com.trello.rxlifecycle2.android.FragmentEvent;
+import com.trello.rxlifecycle2.components.support.RxFragment;
import butterknife.ButterKnife;
-import rx.Observable;
+
/**
* Fragment基类, 继承自此类的Fragment需要实现{@link #getLayoutId}, {@link #init}
@@ -154,19 +153,20 @@ public Context getViewContext() {
return getActivity();
}
+
@Override
- public Observable.Transformer bind() {
+ public LifecycleTransformer bind() {
return bindToLifecycle();
}
@Override
- public Observable.Transformer bindUntil(FragmentEvent event) {
- return bindUntilEvent(event);
+ public LifecycleTransformer bindUntil(ActivityEvent event) {
+ return null;
}
@Override
- public Observable.Transformer bindUntil(ActivityEvent event) {
- return null;
+ public LifecycleTransformer bindUntil(FragmentEvent event) {
+ return bindUntilEvent(event);
}
/**
diff --git a/src/main/java/com/corelibs/base/BasePresenter.java b/src/main/java/com/corelibs/base/BasePresenter.java
index 4ab619b..655817a 100644
--- a/src/main/java/com/corelibs/base/BasePresenter.java
+++ b/src/main/java/com/corelibs/base/BasePresenter.java
@@ -3,10 +3,10 @@
import android.content.Context;
import com.corelibs.api.ApiFactory;
-import com.trello.rxlifecycle.ActivityEvent;
-import com.trello.rxlifecycle.FragmentEvent;
+import com.trello.rxlifecycle2.LifecycleTransformer;
+import com.trello.rxlifecycle2.android.ActivityEvent;
+import com.trello.rxlifecycle2.android.FragmentEvent;
-import rx.Observable;
/**
* Presenter基类, Fragment需使用继承自此类的子类, 泛型需传入继承自{@link BaseView}的MVPView.
@@ -83,15 +83,18 @@ protected Context getContext() {
return view.getViewContext();
}
- protected Observable.Transformer bindToLifeCycle() {
+
+ protected LifecycleTransformer bindToLifeCycle() {
return view.bind();
}
- protected Observable.Transformer bindUntilEvent(ActivityEvent event) {
+
+ protected LifecycleTransformer bindUntilEvent(ActivityEvent event) {
return view.bindUntil(event);
}
- protected Observable.Transformer bindUntilEvent(FragmentEvent event) {
+
+ protected LifecycleTransformer bindUntilEvent(FragmentEvent event) {
return view.bindUntil(event);
}
diff --git a/src/main/java/com/corelibs/base/BaseView.java b/src/main/java/com/corelibs/base/BaseView.java
index 738b7df..c5966ba 100644
--- a/src/main/java/com/corelibs/base/BaseView.java
+++ b/src/main/java/com/corelibs/base/BaseView.java
@@ -2,10 +2,10 @@
import android.content.Context;
-import com.trello.rxlifecycle.ActivityEvent;
-import com.trello.rxlifecycle.FragmentEvent;
+import com.trello.rxlifecycle2.LifecycleTransformer;
+import com.trello.rxlifecycle2.android.ActivityEvent;
+import com.trello.rxlifecycle2.android.FragmentEvent;
-import rx.Observable;
/**
* MVPView基础接口
@@ -44,9 +44,9 @@ public interface BaseView {
*/
Context getViewContext();
- Observable.Transformer bind();
+ LifecycleTransformer bind();
- Observable.Transformer bindUntil(FragmentEvent event);
+ LifecycleTransformer bindUntil(FragmentEvent event);
- Observable.Transformer bindUntil(ActivityEvent event);
+ LifecycleTransformer bindUntil(ActivityEvent event);
}
diff --git a/src/main/java/com/corelibs/subscriber/ResponseAction.java b/src/main/java/com/corelibs/subscriber/ResponseAction.java
index 0d94a23..16cb148 100644
--- a/src/main/java/com/corelibs/subscriber/ResponseAction.java
+++ b/src/main/java/com/corelibs/subscriber/ResponseAction.java
@@ -3,7 +3,8 @@
import com.corelibs.base.BaseView;
import com.corelibs.subscriber.ResponseHandler.IBaseData;
-import rx.functions.Func1;
+import io.reactivex.functions.Function;
+
/**
* 适用于一个网络请求依赖于另一个网络请求结果的情况.
@@ -16,7 +17,7 @@
* 并且返回true.
*
*/
-public abstract class ResponseAction implements Func1,
+public abstract class ResponseAction implements Function,
ResponseHandler.CustomHandler {
private ResponseHandler handler;
@@ -30,7 +31,7 @@ public ResponseAction(BaseView view) {
}
@Override
- public R call(T t) {
+ public R apply(T t) {
IBaseData data;
if (t instanceof IBaseData) {
data = (IBaseData) t;
diff --git a/src/main/java/com/corelibs/subscriber/ResponseHandler.java b/src/main/java/com/corelibs/subscriber/ResponseHandler.java
index 4fb6828..a94ed32 100644
--- a/src/main/java/com/corelibs/subscriber/ResponseHandler.java
+++ b/src/main/java/com/corelibs/subscriber/ResponseHandler.java
@@ -8,7 +8,8 @@
import java.net.SocketTimeoutException;
import java.util.List;
-import retrofit2.adapter.rxjava.HttpException;
+import retrofit2.HttpException;
+
/**
* 网络结果处理类, 此类会判断网络错误与业务错误.
diff --git a/src/main/java/com/corelibs/subscriber/ResponseSubscriber.java b/src/main/java/com/corelibs/subscriber/ResponseSubscriber.java
index 4aa2681..0a39879 100644
--- a/src/main/java/com/corelibs/subscriber/ResponseSubscriber.java
+++ b/src/main/java/com/corelibs/subscriber/ResponseSubscriber.java
@@ -3,9 +3,12 @@
import com.corelibs.base.BaseView;
import com.corelibs.subscriber.ResponseHandler.IBaseData;
+import org.reactivestreams.Subscriber;
+import org.reactivestreams.Subscription;
+
import java.util.List;
-import rx.Subscriber;
+
/**
* 请使用此类来subscribe Retrofit返回Observable.
@@ -17,8 +20,7 @@
* 此类会托管隐藏加载框与错误处理, 如果希望自行处理错误, 请覆写{@link #error(Throwable)}函数,
* 并且返回true.
*/
-public abstract class ResponseSubscriber extends Subscriber
- implements ResponseHandler.CustomHandler {
+public abstract class ResponseSubscriber implements Subscriber, ResponseHandler.CustomHandler {
private ResponseHandler handler;
@@ -45,7 +47,12 @@ public boolean checkListNotNull(List data) {
}
@Override
- public void onCompleted() {
+ public void onSubscribe(Subscription s) {
+ s.request(Long.MAX_VALUE);
+ }
+
+ @Override
+ public void onComplete() {
handler.onCompleted();
handler = null;
}
diff --git a/src/main/java/com/corelibs/subscriber/RxBusSubscriber.java b/src/main/java/com/corelibs/subscriber/RxBusSubscriber.java
index 05bb604..d5ae510 100644
--- a/src/main/java/com/corelibs/subscriber/RxBusSubscriber.java
+++ b/src/main/java/com/corelibs/subscriber/RxBusSubscriber.java
@@ -1,13 +1,15 @@
package com.corelibs.subscriber;
-import rx.Subscriber;
+import io.reactivex.Observer;
/**
* 请使用此类来subscribe RxBus返回的Observable以简化onError与onCompleted函数.
*/
-public abstract class RxBusSubscriber extends Subscriber {
+public abstract class RxBusSubscriber implements Observer {
+
+
@Override
- public void onCompleted() {
+ public void onComplete() {
completed();
}
diff --git a/src/main/java/com/corelibs/utils/rxbus/RxBus.java b/src/main/java/com/corelibs/utils/rxbus/RxBus.java
index c460c77..d3096d0 100644
--- a/src/main/java/com/corelibs/utils/rxbus/RxBus.java
+++ b/src/main/java/com/corelibs/utils/rxbus/RxBus.java
@@ -1,10 +1,12 @@
package com.corelibs.utils.rxbus;
-import rx.Observable;
-import rx.functions.Func1;
-import rx.subjects.PublishSubject;
-import rx.subjects.SerializedSubject;
-import rx.subjects.Subject;
+
+import io.reactivex.Observable;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+import io.reactivex.functions.Predicate;
+import io.reactivex.subjects.PublishSubject;
+import io.reactivex.subjects.Subject;
/**
* 基于事件RxJava的事件总线
@@ -17,7 +19,7 @@ public class RxBus {
// If multiple threads are going to emit events to this
// then it must be made thread-safe like this instead
- private final Subject