From 5ef82a032e852d3eef40f35c91df45fe4828afbb Mon Sep 17 00:00:00 2001 From: longerian Date: Mon, 16 Apr 2018 19:15:38 +0800 Subject: [PATCH] simplify clicksupport, exposuresupport --- .../wireless/tangram/RxClickSupportTest.java | 20 ++++----- .../tangram/RxExposureSupportTest.java | 28 ++++++------ gradle.properties | 2 +- .../wireless/tangram/structure/BaseCell.java | 42 ++++-------------- .../tangram/support/ExposureSupport.java | 40 ++++------------- .../tangram/support/SimpleClickSupport.java | 44 +++---------------- 6 files changed, 48 insertions(+), 128 deletions(-) diff --git a/examples/src/androidTest/java/com/tmall/wireless/tangram/RxClickSupportTest.java b/examples/src/androidTest/java/com/tmall/wireless/tangram/RxClickSupportTest.java index 6cb6873..97b6acd 100644 --- a/examples/src/androidTest/java/com/tmall/wireless/tangram/RxClickSupportTest.java +++ b/examples/src/androidTest/java/com/tmall/wireless/tangram/RxClickSupportTest.java @@ -113,7 +113,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testOneCellClicks test One cell mEventType " + clickEvent.getArg3()); } }; - mSimpleClickSupport.setConsumer(consumer1); + //mSimpleClickSupport.setConsumer(consumer1); mBaseCell1.click(mView1); mView1.performClick(); } @@ -132,7 +132,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testTwoCellClicks mEventType " + clickEvent.getArg3()); } }; - mSimpleClickSupport.setConsumer(consumer1); + //mSimpleClickSupport.setConsumer(consumer1); mBaseCell1.click(mView1); mView1.performClick(); @@ -147,7 +147,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testTwoCellClicks mEventType " + clickEvent.getArg3()); } }; - mSimpleClickSupport.setConsumer(consumer2); + //mSimpleClickSupport.setConsumer(consumer2); mBaseCell2.click(mView2); mView2.performClick(); @@ -167,7 +167,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testOneConsumerSubscribeTwoCellClicks mEventType " + clickEvent.getArg3()); } }; - mSimpleClickSupport.setConsumer(consumer); + //mSimpleClickSupport.setConsumer(consumer); mBaseCell1.click(mView1); mView1.performClick(); @@ -189,10 +189,10 @@ public class RxClickSupportTest extends AndroidTestCase { assertTrue(false); } }; - mSimpleClickSupport.setConsumer(consumer); + //mSimpleClickSupport.setConsumer(consumer); mBaseCell1.click(mView1); - mSimpleClickSupport.destroy(); + //mSimpleClickSupport.destroy(); mView1.performClick(); } @@ -208,7 +208,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testCellClickDisposeAndResubscribe mEventType " + clickEvent.getArg3()); } }; - mSimpleClickSupport.setConsumer(consumer); + //mSimpleClickSupport.setConsumer(consumer); mBaseCell1.click(mView1); mBaseCell1.click(mView1); @@ -229,7 +229,7 @@ public class RxClickSupportTest extends AndroidTestCase { Log.d("RxClickSupportTest", "testOneCellWithMultiViewClick view " + clickEvent.getArg1()); } }; - mSimpleClickSupport.setConsumer(consumer); + //mSimpleClickSupport.setConsumer(consumer); mBaseCell1.click(mView1); mBaseCell1.click(mView2); @@ -254,12 +254,12 @@ public class RxClickSupportTest extends AndroidTestCase { assertTrue(false); } }; - mSimpleClickSupport.setConsumer(consumer); + //mSimpleClickSupport.setConsumer(consumer); mBaseCell1.click(mView1); mBaseCell1.click(mView2); - mSimpleClickSupport.destroy(); + //mSimpleClickSupport.destroy(); mView1.performClick(); mView2.performClick(); diff --git a/examples/src/androidTest/java/com/tmall/wireless/tangram/RxExposureSupportTest.java b/examples/src/androidTest/java/com/tmall/wireless/tangram/RxExposureSupportTest.java index 8e7f7d1..7804419 100644 --- a/examples/src/androidTest/java/com/tmall/wireless/tangram/RxExposureSupportTest.java +++ b/examples/src/androidTest/java/com/tmall/wireless/tangram/RxExposureSupportTest.java @@ -129,7 +129,7 @@ public class RxExposureSupportTest extends AndroidTestCase { Log.d("RxExposureSupportTest", "testOneCellExposure test One cell mEventType " + clickEvent.getArg3()); } }; - mExposureSupport.setConsumer(consumer1); + //mExposureSupport.setConsumer(consumer1); mBaseCell1.exposure(mView1); } @@ -147,7 +147,7 @@ public class RxExposureSupportTest extends AndroidTestCase { Log.d("RxExposureSupportTest", "testOneCellWithMultiViewExposure view " + clickEvent.getArg1()); } }; - mExposureSupport.setConsumer(consumer1); + //mExposureSupport.setConsumer(consumer1); mBaseCell1.exposure(mView1); mBaseCell1.exposure(mView2); @@ -166,7 +166,7 @@ public class RxExposureSupportTest extends AndroidTestCase { Log.d("RxExposureSupportTest", "testOneConsumerSubscribeTwoCellExposure mEventType " + clickEvent.getArg3()); } }; - mExposureSupport.setConsumer(consumer); + //mExposureSupport.setConsumer(consumer); mBaseCell1.exposure(mView1); mBaseCell2.exposure(mView2); } @@ -203,18 +203,18 @@ public class RxExposureSupportTest extends AndroidTestCase { } - @Override - public void onRxExposure(Observable exposureCellOpObservable, - ClickExposureCellOp rxEvent) { - mCompositeDisposable.add( - exposureCellOpObservable.delaySubscription(1, TimeUnit.MINUTES).subscribe(consumer)); - } + //@Override + //public void onRxExposure(Observable exposureCellOpObservable, + // ClickExposureCellOp rxEvent) { + // mCompositeDisposable.add( + // exposureCellOpObservable.delaySubscription(1, TimeUnit.MINUTES).subscribe(consumer)); + //} - @Override - public void destroy() { - super.destroy(); - mCompositeDisposable.clear(); - } + //@Override + //public void destroy() { + // super.destroy(); + // mCompositeDisposable.clear(); + //} }; mServiceManager.register(ExposureSupport.class, exposureSupport); mBaseCell1.exposure(mView1); diff --git a/gradle.properties b/gradle.properties index 043947a..a5ce230 100644 --- a/gradle.properties +++ b/gradle.properties @@ -46,7 +46,7 @@ org.gradle.jvmargs=-Xmx1536M GROUP=com.alibaba.android ARTIFACT=tangram VERSION=1 -VERSION_NAME=2.2.3.3 +VERSION_NAME=2.2.3.4 PACKAGING_TYPE=aar systemProp.compileSdkVersion=25 systemProp.targetSdkVersion=25 diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java index f8911ed..e80f448 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java @@ -43,29 +43,11 @@ import com.tmall.wireless.tangram.op.ClickExposureCellOp; import com.tmall.wireless.tangram.op.UpdateCellOp; import com.tmall.wireless.tangram.support.CellClickObservable; import com.tmall.wireless.tangram.support.CellExposureObservable; -import com.tmall.wireless.tangram.support.ExposureSupport; import com.tmall.wireless.tangram.support.SimpleClickSupport; import com.tmall.wireless.tangram.util.BDE; import com.tmall.wireless.tangram.util.IInnerImageSetter; import com.tmall.wireless.tangram.util.ImageUtils; -import com.tmall.wireless.tangram.util.LifeCycleHelper; import com.tmall.wireless.tangram.util.LifeCycleProviderImpl; -import io.reactivex.Completable; -import io.reactivex.CompletableSource; -import io.reactivex.CompletableTransformer; -import io.reactivex.Maybe; -import io.reactivex.MaybeSource; -import io.reactivex.MaybeTransformer; -import io.reactivex.Observable; -import io.reactivex.ObservableSource; -import io.reactivex.ObservableTransformer; -import io.reactivex.Single; -import io.reactivex.SingleSource; -import io.reactivex.SingleTransformer; -import io.reactivex.functions.Consumer; -import io.reactivex.functions.Function; -import io.reactivex.functions.Predicate; -import io.reactivex.subjects.BehaviorSubject; import io.reactivex.subjects.PublishSubject; import org.json.JSONArray; import org.json.JSONObject; @@ -397,8 +379,7 @@ public class BaseCell extends ComponentLifecycle implements View * @param rxClickExposureEvent * @since 3.0.0 */ - public void exposure(View targetView, ClickExposureCellOp rxClickExposureEvent) { - final ExposureSupport exposureSupport = serviceManager.getService(ExposureSupport.class); + public CellExposureObservable exposure(View targetView, ClickExposureCellOp rxClickExposureEvent) { CellExposureObservable cellExposureObservable = mViewExposureObservables.get(targetView); if (cellExposureObservable == null) { cellExposureObservable = new CellExposureObservable(rxClickExposureEvent); @@ -406,16 +387,14 @@ public class BaseCell extends ComponentLifecycle implements View } else { cellExposureObservable.setRxClickExposureEvent(rxClickExposureEvent); } - if (exposureSupport != null) { - exposureSupport.onRxExposure(cellExposureObservable, rxClickExposureEvent); - } + return cellExposureObservable; } /** * @param targetView * @since 3.0.0 */ - public void exposure(View targetView) { + public CellExposureObservable exposure(View targetView) { ClickExposureCellOp rxExposureEvent = mRxExposureEvents.get(targetView); if (rxExposureEvent == null) { rxExposureEvent = new ClickExposureCellOp(targetView, this, this.pos); @@ -425,7 +404,7 @@ public class BaseCell extends ComponentLifecycle implements View rxExposureEvent.setArg2(this); rxExposureEvent.setArg3(this.pos); } - exposure(targetView, rxExposureEvent); + return exposure(targetView, rxExposureEvent); } private ArrayMap mRxClickEvents = new ArrayMap<>(); @@ -437,7 +416,7 @@ public class BaseCell extends ComponentLifecycle implements View * @param rxClickExposureEvent * @since 3.0.0 */ - public void click(View view, ClickExposureCellOp rxClickExposureEvent) { + public CellClickObservable click(View view, ClickExposureCellOp rxClickExposureEvent) { CellClickObservable cellClickObservable = mViewClickObservables.get(view); if (cellClickObservable == null) { cellClickObservable = new CellClickObservable(rxClickExposureEvent); @@ -445,19 +424,14 @@ public class BaseCell extends ComponentLifecycle implements View } else { cellClickObservable.setRxClickExposureEvent(rxClickExposureEvent); } - if (serviceManager != null) { - final SimpleClickSupport service = serviceManager.getService(SimpleClickSupport.class); - if (service != null) { - service.onRxClick(cellClickObservable, rxClickExposureEvent); - } - } + return cellClickObservable; } /** * @param view * @since 3.0.0 */ - public void click(View view) { + public CellClickObservable click(View view) { ClickExposureCellOp rxClickEvent = mRxClickEvents.get(view); if (rxClickEvent == null) { rxClickEvent = new ClickExposureCellOp(view, this, this.pos); @@ -467,7 +441,7 @@ public class BaseCell extends ComponentLifecycle implements View rxClickEvent.setArg2(this); rxClickEvent.setArg3(this.pos); } - click(view, rxClickEvent); + return click(view, rxClickEvent); } public static final class NanBaseCell extends BaseCell { diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/support/ExposureSupport.java b/tangram/src/main/java/com/tmall/wireless/tangram/support/ExposureSupport.java index 10f38f8..07ee662 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/support/ExposureSupport.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/support/ExposureSupport.java @@ -24,20 +24,6 @@ package com.tmall.wireless.tangram.support; -import com.tmall.wireless.tangram.dataparser.concrete.Card; -import com.tmall.wireless.tangram.op.ClickExposureCellOp; -import com.tmall.wireless.tangram.structure.BaseCell; -import com.tmall.wireless.tangram.util.LogUtils; - -import android.support.annotation.NonNull; -import android.support.v4.util.ArrayMap; -import android.util.Log; -import android.view.View; -import io.reactivex.Observable; -import io.reactivex.ObservableTransformer; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.functions.Consumer; - import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; @@ -45,6 +31,14 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import android.support.annotation.NonNull; +import android.support.v4.util.ArrayMap; +import android.util.Log; +import android.view.View; +import com.tmall.wireless.tangram.dataparser.concrete.Card; +import com.tmall.wireless.tangram.structure.BaseCell; +import com.tmall.wireless.tangram.util.LogUtils; + /** * * Exposure which provide a group of methods to handle exposure events on ComponentViews and Card @@ -269,25 +263,7 @@ public abstract class ExposureSupport { } - private CompositeDisposable mCompositeDisposable = new CompositeDisposable(); - - public void onRxExposure(Observable exposureCellOpObservable, ClickExposureCellOp rxEvent) { - mCompositeDisposable.add(exposureCellOpObservable.subscribe(mConsumer)); - } - - private Consumer mConsumer = new Consumer() { - @Override - public void accept(ClickExposureCellOp rxClickExposureEvent) throws Exception { - attachUtInfoToView(rxClickExposureEvent.getArg1(), rxClickExposureEvent.getArg2()); - } - }; - - public void setConsumer(Consumer consumer) { - mConsumer = consumer; - } - public void destroy() { - mCompositeDisposable.clear(); } } diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/support/SimpleClickSupport.java b/tangram/src/main/java/com/tmall/wireless/tangram/support/SimpleClickSupport.java index 91121d9..e5735fd 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/support/SimpleClickSupport.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/support/SimpleClickSupport.java @@ -24,19 +24,6 @@ package com.tmall.wireless.tangram.support; -import android.support.v4.util.ArrayMap; -import android.util.Log; -import android.view.View; - -import com.tmall.wireless.tangram.dataparser.concrete.Cell; -import com.tmall.wireless.tangram.op.ClickExposureCellOp; -import com.tmall.wireless.tangram.structure.BaseCell; -import com.tmall.wireless.tangram.util.LogUtils; -import io.reactivex.Observable; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; - import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; @@ -44,6 +31,13 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import android.support.v4.util.ArrayMap; +import android.util.Log; +import android.view.View; +import com.tmall.wireless.tangram.dataparser.concrete.Cell; +import com.tmall.wireless.tangram.structure.BaseCell; +import com.tmall.wireless.tangram.util.LogUtils; + /** * ClickSupport which provide a group of methods to handle click events on ComponentViews @@ -201,31 +195,7 @@ public abstract class SimpleClickSupport { } } - private CompositeDisposable mCompositeDisposable = new CompositeDisposable(); - - /** - * Handler click event on item in reactive way - * - * @param clickEventObservable - * @param rxEvent - */ - public void onRxClick(Observable clickEventObservable, ClickExposureCellOp rxEvent) { - mCompositeDisposable.add(clickEventObservable.subscribe(mConsumer)); - } - - private Consumer mConsumer = new Consumer() { - @Override - public void accept(ClickExposureCellOp rxClickExposureEvent) throws Exception { - defaultClick(rxClickExposureEvent.getArg1(), rxClickExposureEvent.getArg2(), rxClickExposureEvent.getArg3()); - } - }; - - public void setConsumer(Consumer consumer) { - mConsumer = consumer; - } - public void destroy() { - mCompositeDisposable.clear(); } } \ No newline at end of file