diff --git a/app/build.gradle b/app/build.gradle index 56aa643..b59fa65 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,8 +33,8 @@ dependencies { //rxbinding的sdk implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1' -// implementation project(':rxutil2') - implementation 'com.github.xuexiangjys:RxUtil2:1.1.2' + implementation project(':rxutil2') +// implementation 'com.github.xuexiangjys:RxUtil2:1.1.2' //leak debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4' diff --git a/app/src/main/java/com/xuexiang/rxutil2demo/activity/RxJavaActivity.java b/app/src/main/java/com/xuexiang/rxutil2demo/activity/RxJavaActivity.java index 8e2b618..5f81963 100644 --- a/app/src/main/java/com/xuexiang/rxutil2demo/activity/RxJavaActivity.java +++ b/app/src/main/java/com/xuexiang/rxutil2demo/activity/RxJavaActivity.java @@ -42,6 +42,7 @@ import butterknife.BindView; import butterknife.OnClick; import io.reactivex.functions.Consumer; +import io.reactivex.functions.Function; /** * RxJavaUtils演示示例 @@ -93,16 +94,16 @@ public void doInUIThread(String s) { }); break; case R.id.btn_do_in_io_ui: -// RxJavaUtils.executeAsyncTask("我是入参789", new Function() { +// RxJavaUtils.executeAsyncTask2("我是入参789", new Function() { // @Override // public Integer apply(String s) throws Exception { // Log.e(TAG, "[doInIOThread] " + getLooperStatus() + ", 入参:" + s); // return 12345; // } -// }, new Consumer() { +// }, new SimpleSubscriber() { // @Override -// public void accept(Integer integer) throws Exception { -// Log.e(TAG, "[doInUIThread] " + getLooperStatus() + ", 入参:" + integer); +// public void onSuccess(Integer integer) { +// int a = 100/0; // } // }); RxJavaUtils.executeAsyncTask(new RxAsyncTask("我是入参789") { @@ -121,7 +122,7 @@ public void doInUIThread(Integer integer) { case R.id.btn_loading: RxJavaUtils.delay("加载完毕!", 3, TimeUnit.SECONDS, new ProgressLoadingSubscriber(mProgressLoader) { @Override - public void onNext(String s) { + public void onSuccess(String s) { Toast.makeText(RxJavaActivity.this, s, Toast.LENGTH_SHORT).show(); } }); @@ -145,7 +146,7 @@ public void onStart() { } @Override - public void onNext(Long aLong) { + public void onSuccess(Long aLong) { mBtnCountDown.setText(String.format("%s s后重新获取", aLong)); } diff --git a/rxutil2/src/main/java/com/xuexiang/rxutil2/subsciber/BaseSubscriber.java b/rxutil2/src/main/java/com/xuexiang/rxutil2/subsciber/BaseSubscriber.java index 5358187..7ea406d 100644 --- a/rxutil2/src/main/java/com/xuexiang/rxutil2/subsciber/BaseSubscriber.java +++ b/rxutil2/src/main/java/com/xuexiang/rxutil2/subsciber/BaseSubscriber.java @@ -48,6 +48,15 @@ public void onComplete() { RxLog.e("-->Subscriber is Complete"); } + @Override + public void onNext(T t) { + try { + onSuccess(t); + } catch (Throwable e) { + e.printStackTrace(); + onError(e); + } + } @Override public final void onError(Throwable e) { @@ -67,8 +76,16 @@ public final void onError(Throwable e) { /** * 出错 + * * @param e */ public abstract void onError(RxException e); + /** + * 安全版的{@link #onNext},自动做了try-catch + * + * @param t + */ + public abstract void onSuccess(T t); + }