Skip to content

Commit 9c2af1c

Browse files
author
Kaushik Gopal
committed
feat: wip: got accumulation of tapping to work, but all events go through to onComplete
1 parent 657bcfc commit 9c2af1c

1 file changed

Lines changed: 26 additions & 20 deletions

File tree

app/src/main/java/com/morihacky/android/rxjava/DemoAccumulateEventFragment.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Context;
44
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.os.Looper;
57
import android.support.annotation.Nullable;
68
import android.support.v4.app.Fragment;
79
import android.view.LayoutInflater;
@@ -21,8 +23,6 @@
2123
import rx.Observable;
2224
import rx.Observer;
2325
import rx.android.observables.AndroidObservable;
24-
import rx.android.schedulers.AndroidSchedulers;
25-
import rx.functions.Action1;
2626
import rx.schedulers.Schedulers;
2727
import rx.subjects.BehaviorSubject;
2828
import timber.log.Timber;
@@ -35,6 +35,7 @@ public class DemoAccumulateEventFragment
3535

3636
private LogAdapter _adapter;
3737
private List<String> _logs;
38+
private final Handler _mainThreadHandler = new Handler(Looper.getMainLooper());
3839

3940
private BehaviorSubject<Observable<Integer>> _loggerSubject; // Special Rx entity that modifies Observable behavior for aggregation
4041
private int _counter = 0;
@@ -46,8 +47,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
4647

4748
// Create the subscription
4849
AndroidObservable.bindFragment(this, _getObservable_ForTaps()) // Observable
49-
.observeOn(AndroidSchedulers.mainThread())
50-
.subscribeOn(Schedulers.io())
50+
.observeOn(Schedulers.io())
5151
.subscribe(_getSubscriber_ForTaps()); // Subscriber
5252
}
5353

@@ -56,7 +56,8 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
5656
public void onButtonTapped() {
5757
// BehaviorSubject takes in Observable inputs.
5858
// So send 1 tap as an observable
59-
_loggerSubject.onNext(Observable.from(1));
59+
_counter += 1;
60+
_loggerSubject.onNext(Observable.from(_counter));
6061
}
6162

6263
// -----------------------------------------------------------------------------------
@@ -88,34 +89,39 @@ private Observer<? super Integer> _getSubscriber_ForTaps() {
8889
return this;
8990
}
9091

91-
/*private Action1<Integer> _getSubscriber_ForTaps() {
92-
return new Action1<Integer>(){
92+
@Override
93+
public void onCompleted() {
94+
Timber.d("--------- completed ");
9395

96+
_mainThreadHandler.post(new Runnable() {
9497

95-
@Override
96-
public void call(Integer integer) {
9798

99+
@Override
100+
public void run() {
101+
_addLogToAdapter(String.format("%d taps", _counter));
102+
_counter = 0;
98103
}
99-
};
100-
}*/
101-
102-
103-
@Override
104-
public void onCompleted() {
105-
Timber.d("--------- completed ");
106-
_addLogToAdapter(String.format("%d taps", _counter));
107-
_counter = 0;
104+
});
108105
}
109106

110107
@Override
111108
public void onNext(Integer integer) {
112-
_counter += integer;
109+
Timber.d("--------- on next %d", integer);
110+
_simulateLongOperation();
113111
onCompleted();
114112
}
115113

116114
@Override
117115
public void onError(Throwable e) {
118-
Timber.e(e, "--------- Woops something went wrong");
116+
Timber.e(e, "--------- Woops on error!");
117+
}
118+
119+
private void _simulateLongOperation() {
120+
try {
121+
Thread.sleep(2000);
122+
} catch (InterruptedException e) {
123+
e.printStackTrace();
124+
}
119125
}
120126

121127
// -----------------------------------------------------------------------------------

0 commit comments

Comments
 (0)