Skip to content

Commit 5512ca0

Browse files
author
Kaushik Gopal
committed
wip
1 parent 9c2af1c commit 5512ca0

File tree

1 file changed

+44
-46
lines changed

1 file changed

+44
-46
lines changed

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

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,26 @@
1616

1717
import java.util.ArrayList;
1818
import java.util.List;
19+
import java.util.concurrent.TimeUnit;
1920

2021
import butterknife.ButterKnife;
2122
import butterknife.InjectView;
2223
import butterknife.OnClick;
2324
import rx.Observable;
2425
import rx.Observer;
25-
import rx.android.observables.AndroidObservable;
26+
import rx.Subscriber;
2627
import rx.schedulers.Schedulers;
27-
import rx.subjects.BehaviorSubject;
2828
import timber.log.Timber;
2929

3030
public class DemoAccumulateEventFragment
31-
extends Fragment
32-
implements Observer<Integer> {
31+
extends Fragment {
3332

3433
@InjectView(R.id.accumulated_event_list) ListView _logsListView;
3534

3635
private LogAdapter _adapter;
3736
private List<String> _logs;
3837
private final Handler _mainThreadHandler = new Handler(Looper.getMainLooper());
3938

40-
private BehaviorSubject<Observable<Integer>> _loggerSubject; // Special Rx entity that modifies Observable behavior for aggregation
4139
private int _counter = 0;
4240

4341
@Override
@@ -46,9 +44,9 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
4644
_setupLogAdapter();
4745

4846
// Create the subscription
49-
AndroidObservable.bindFragment(this, _getObservable_ForTaps()) // Observable
50-
.observeOn(Schedulers.io())
51-
.subscribe(_getSubscriber_ForTaps()); // Subscriber
47+
// AndroidObservable.bindFragment(this, _getObservable()) // Observable
48+
// .observeOn(Schedulers.io())
49+
// .subscribe(_getObserver()); // Observer
5250
}
5351

5452

@@ -57,7 +55,7 @@ public void onButtonTapped() {
5755
// BehaviorSubject takes in Observable inputs.
5856
// So send 1 tap as an observable
5957
_counter += 1;
60-
_loggerSubject.onNext(Observable.from(_counter));
58+
_getObservable().observeOn(Schedulers.io()).subscribe(_getObserver());
6159
}
6260

6361
// -----------------------------------------------------------------------------------
@@ -71,57 +69,57 @@ public void onButtonTapped() {
7169
*
7270
* https://github.com/Netflix/RxJava/wiki/Subject#behaviorsubject
7371
*/
74-
private Observable<Integer> _getObservable_ForTaps() {
75-
if (_loggerSubject == null) {
76-
_loggerSubject = BehaviorSubject.create(Observable.from(0));
77-
}
72+
private Observable<List<Integer>> _getObservable() {
73+
return Observable.create(new Observable.OnSubscribe<Integer>() {
74+
7875

79-
return Observable.switchOnNext(_loggerSubject);
76+
@Override
77+
public void call(Subscriber<? super Integer> observer) {
78+
observer.onNext(1);
79+
}
80+
}).buffer(2, TimeUnit.SECONDS);
8081
}
8182

8283
/**
83-
* Subscriber that has the 3 important actions
84-
* 1. onNext
84+
* Observer that handles the result List<Integer> from Observable
85+
* through the 3 important actions:
86+
*
87+
* 1. onCompleted
8588
* 2. onError
86-
* 3. onCompleted
89+
* 3. onNext
8790
*/
88-
private Observer<? super Integer> _getSubscriber_ForTaps() {
89-
return this;
90-
}
91+
private Observer<List<Integer>> _getObserver() {
92+
return new Observer<List<Integer>>() {
9193

92-
@Override
93-
public void onCompleted() {
94-
Timber.d("--------- completed ");
9594

96-
_mainThreadHandler.post(new Runnable() {
95+
@Override
96+
public void onCompleted() {
97+
_mainThreadHandler.post(new Runnable() {
9798

9899

99-
@Override
100-
public void run() {
101-
_addLogToAdapter(String.format("%d taps", _counter));
102-
_counter = 0;
100+
@Override
101+
public void run() {
102+
_addLogToAdapter(String.format("%d taps", _counter));
103+
_counter = 0;
104+
}
105+
});
103106
}
104-
});
105-
}
106107

107-
@Override
108-
public void onNext(Integer integer) {
109-
Timber.d("--------- on next %d", integer);
110-
_simulateLongOperation();
111-
onCompleted();
112-
}
108+
@Override
109+
public void onError(Throwable e) {
110+
Timber.e(e, "--------- Woops on error!");
111+
}
113112

114-
@Override
115-
public void onError(Throwable e) {
116-
Timber.e(e, "--------- Woops on error!");
117-
}
113+
@Override
114+
public void onNext(List<Integer> integers) {
115+
for (int i : integers) {
116+
_counter += i;
117+
}
118118

119-
private void _simulateLongOperation() {
120-
try {
121-
Thread.sleep(2000);
122-
} catch (InterruptedException e) {
123-
e.printStackTrace();
124-
}
119+
Timber.d("--------- on next with a count of %d", _counter);
120+
onCompleted();
121+
}
122+
};
125123
}
126124

127125
// -----------------------------------------------------------------------------------

0 commit comments

Comments
 (0)