Skip to content

Commit adffc8e

Browse files
author
Kaushik Gopal
committed
refactor: cleanup names for demo
1 parent 5512ca0 commit adffc8e

File tree

10 files changed

+228
-26
lines changed

10 files changed

+228
-26
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
android:label="@string/app_name"
99
android:theme="@style/AppTheme" >
1010
<activity
11-
android:name="com.morihacky.android.rxjava.DemoActivity"
11+
android:name="com.morihacky.android.rxjava.MainActivity"
1212
android:label="@string/app_name" >
1313
<intent-filter>
1414
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/morihacky/android/rxjava/DemoAccumulateEventFragment.java renamed to app/src/main/java/com/morihacky/android/rxjava/BufferDemoFragment.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
import rx.schedulers.Schedulers;
2828
import timber.log.Timber;
2929

30-
public class DemoAccumulateEventFragment
30+
public class BufferDemoFragment
3131
extends Fragment {
3232

33-
@InjectView(R.id.accumulated_event_list) ListView _logsListView;
33+
@InjectView(R.id.list_threading_log) ListView _logsList;
3434

3535
private LogAdapter _adapter;
3636
private List<String> _logs;
@@ -50,7 +50,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
5050
}
5151

5252

53-
@OnClick(R.id.accumulated_event_btn)
53+
@OnClick(R.id.btn_start_operation)
5454
public void onButtonTapped() {
5555
// BehaviorSubject takes in Observable inputs.
5656
// So send 1 tap as an observable
@@ -129,15 +129,15 @@ public void onNext(List<Integer> integers) {
129129
public View onCreateView(LayoutInflater inflater,
130130
@Nullable ViewGroup container,
131131
@Nullable Bundle savedInstanceState) {
132-
View layout = inflater.inflate(R.layout.fragment_accumulate, container, false);
132+
View layout = inflater.inflate(R.layout.fragment_buffer, container, false);
133133
ButterKnife.inject(this, layout);
134134
return layout;
135135
}
136136

137137
private void _setupLogAdapter() {
138138
_logs = new ArrayList<String>();
139139
_adapter = new LogAdapter(getActivity(), new ArrayList<String>());
140-
_logsListView.setAdapter(_adapter);
140+
_logsList.setAdapter(_adapter);
141141
}
142142

143143
private void _addLogToAdapter(String logMsg) {
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package com.morihacky.android.rxjava;
2+
3+
import android.content.Context;
4+
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.os.Looper;
7+
import android.support.annotation.Nullable;
8+
import android.support.v4.app.Fragment;
9+
import android.view.LayoutInflater;
10+
import android.view.View;
11+
import android.view.ViewGroup;
12+
import android.widget.ArrayAdapter;
13+
import android.widget.Button;
14+
import android.widget.ListView;
15+
import android.widget.ProgressBar;
16+
17+
import com.morihacky.android.rxjava.app.R;
18+
19+
import java.util.ArrayList;
20+
import java.util.List;
21+
import java.util.concurrent.TimeUnit;
22+
23+
import butterknife.ButterKnife;
24+
import butterknife.InjectView;
25+
import butterknife.OnClick;
26+
import rx.Observable;
27+
import rx.Observer;
28+
import rx.Subscriber;
29+
import rx.schedulers.Schedulers;
30+
import timber.log.Timber;
31+
32+
public class ConcurrencyWithSchedulersDemoFragment
33+
extends Fragment {
34+
35+
36+
// @InjectView(R.id.btn_start_operation) Button _btnStart;
37+
@InjectView(R.id.progress_operation_running) ProgressBar _progress;
38+
@InjectView(R.id.list_threading_log) ListView _logsList;
39+
40+
private LogAdapter _adapter;
41+
private List<String> _logs;
42+
43+
44+
// -----------------------------------------------------------------------------------
45+
// Main Rx entities
46+
47+
/**
48+
* Gets the Observable as emitted from BehaviorSubject
49+
*
50+
* It begins by emitting the item most recently emitted by source Observable
51+
* (or seed/default if none has yet been emitted - which is the case here)
52+
*
53+
* https://github.com/Netflix/RxJava/wiki/Subject#behaviorsubject
54+
*/
55+
private Observable<List<Integer>> _getObservable() {
56+
return Observable.create(new Observable.OnSubscribe<Integer>() {
57+
58+
59+
@Override
60+
public void call(Subscriber<? super Integer> observer) {
61+
observer.onNext(1);
62+
}
63+
}).buffer(2, TimeUnit.SECONDS);
64+
}
65+
66+
/**
67+
* Observer that handles the result List<Integer> from Observable
68+
* through the 3 important actions:
69+
*
70+
* 1. onCompleted
71+
* 2. onError
72+
* 3. onNext
73+
*/
74+
private Observer<List<Integer>> _getObserver() {
75+
return new Observer<List<Integer>>() {
76+
77+
78+
@Override
79+
public void onCompleted() {
80+
_mainThreadHandler.post(new Runnable() {
81+
82+
83+
@Override
84+
public void run() {
85+
_addLogToAdapter(String.format("%d taps", _counter));
86+
_counter = 0;
87+
}
88+
});
89+
}
90+
91+
@Override
92+
public void onError(Throwable e) {
93+
Timber.e(e, "--------- Woops on error!");
94+
}
95+
96+
@Override
97+
public void onNext(List<Integer> integers) {
98+
for (int i : integers) {
99+
_counter += i;
100+
}
101+
102+
Timber.d("--------- on next with a count of %d", _counter);
103+
onCompleted();
104+
}
105+
};
106+
}
107+
108+
// -----------------------------------------------------------------------------------
109+
// Method that help wiring up the example (irrelevant to RxJava)
110+
111+
@Override
112+
public View onCreateView(LayoutInflater inflater,
113+
@Nullable ViewGroup container,
114+
@Nullable Bundle savedInstanceState) {
115+
View layout = inflater.inflate(R.layout.fragment_concurrency_schedulers, container, false);
116+
ButterKnife.inject(this, layout);
117+
return layout;
118+
}
119+
120+
private void _setupLogAdapter() {
121+
_logs = new ArrayList<String>();
122+
_adapter = new LogAdapter(getActivity(), new ArrayList<String>());
123+
_logsListView.setAdapter(_adapter);
124+
}
125+
126+
private void _addLogToAdapter(String logMsg) {
127+
_logs.add(0, logMsg);
128+
_adapter.clear();
129+
_adapter.addAll(_logs);
130+
}
131+
132+
private class LogAdapter
133+
extends ArrayAdapter<String> {
134+
135+
public LogAdapter(Context context, List<String> logs) {
136+
super(context, R.layout.item_log, R.id.item_log, logs);
137+
}
138+
}
139+
}

app/src/main/java/com/morihacky/android/rxjava/DemoActivity.java renamed to app/src/main/java/com/morihacky/android/rxjava/MainActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77

88
import timber.log.Timber;
99

10-
public class DemoActivity
10+
public class MainActivity
1111
extends FragmentActivity {
1212

1313
@Override
1414
protected void onCreate(Bundle savedInstanceState) {
1515
super.onCreate(savedInstanceState);
16-
setContentView(R.layout.activity_demo);
16+
setContentView(R.layout.activity_main);
1717

1818
Timber.plant(new Timber.DebugTree());
1919

2020
getSupportFragmentManager().beginTransaction()
2121
.addToBackStack(this.toString())
22-
.replace(R.id.activity_container, new DemoFragment(), this.toString())
22+
.replace(R.id.activity_main, new MainFragment(), this.toString())
2323
.commit();
2424
}
2525
}

app/src/main/java/com/morihacky/android/rxjava/DemoFragment.java renamed to app/src/main/java/com/morihacky/android/rxjava/MainFragment.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,37 @@
1212
import butterknife.ButterKnife;
1313
import butterknife.OnClick;
1414

15-
public class DemoFragment
15+
public class MainFragment
1616
extends Fragment {
1717

1818
@Override
1919
public View onCreateView(LayoutInflater inflater,
2020
@Nullable ViewGroup container,
2121
@Nullable Bundle savedInstanceState) {
22-
View layout = inflater.inflate(R.layout.fragment_demo, container, false);
22+
View layout = inflater.inflate(R.layout.fragment_main, container, false);
2323
ButterKnife.inject(this, layout);
2424
return layout;
2525
}
2626

27-
@OnClick(R.id.demo_accumulate_event)
28-
public void demoAccumulationOfEvents() {
27+
@OnClick(R.id.btn_demo_schedulers)
28+
public void demoConcurrencyWithSchedulers() {
2929
getActivity().getSupportFragmentManager()
3030
.beginTransaction()
3131
.addToBackStack(this.toString())
32-
.replace(R.id.activity_container,
33-
new DemoAccumulateEventFragment(),
32+
.replace(R.id.activity_main,
33+
new ConcurrencyWithSchedulersDemoFragment(),
34+
this.toString())
35+
.commit();
36+
}
37+
38+
39+
@OnClick(R.id.btn_demo_buffer)
40+
public void demoBuffer() {
41+
getActivity().getSupportFragmentManager()
42+
.beginTransaction()
43+
.addToBackStack(this.toString())
44+
.replace(R.id.activity_main,
45+
new BufferDemoFragment(),
3446
this.toString())
3547
.commit();
3648
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<FrameLayout
2-
android:id="@+id/activity_container"
2+
android:id="@+id/activity_main"
33
android:layout_height="match_parent"
44
android:layout_width="match_parent"
55
xmlns:android="http://schemas.android.com/apk/res/android" />

app/src/main/res/layout/fragment_accumulate.xml renamed to app/src/main/res/layout/fragment_buffer.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
android:layout_width="match_parent"
1212
android:padding="10dp"
1313
android:gravity="center"
14-
android:text="@string/demo_accumulate_msg"/>
14+
android:text="@string/msg_demo_buffer"/>
1515

1616
<Button
17-
android:id="@+id/accumulated_event_btn"
17+
android:id="@+id/btn_start_operation"
1818
android:layout_height="wrap_content"
1919
android:layout_width="match_parent"
2020
android:layout_marginLeft="90dp"
@@ -23,7 +23,7 @@
2323
android:text="tap me"/>
2424

2525
<ListView
26-
android:id="@+id/accumulated_event_list"
26+
android:id="@+id/list_threading_log"
2727
android:layout_height="match_parent"
2828
android:layout_width="match_parent"/>
2929

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<LinearLayout
4+
android:orientation="vertical"
5+
android:layout_height="match_parent"
6+
android:layout_width="match_parent"
7+
xmlns:android="http://schemas.android.com/apk/res/android">
8+
9+
<TextView
10+
android:layout_height="wrap_content"
11+
android:layout_width="match_parent"
12+
android:padding="10dp"
13+
android:gravity="center"
14+
android:text="@string/msg_demo_concurrency_schedulers"/>
15+
16+
17+
<LinearLayout
18+
android:layout_height="wrap_content"
19+
android:layout_width="match_parent">
20+
21+
<Button
22+
android:id="@+id/btn_start_operation"
23+
android:layout_height="wrap_content"
24+
android:layout_width="wrap_content"
25+
android:layout_marginLeft="20dp"
26+
android:textSize="16sp"
27+
android:text="Start long running operation"/>
28+
29+
<ProgressBar
30+
android:id="@+id/progress_operation_running"
31+
android:visibility="gone"
32+
android:layout_height="wrap_content"
33+
android:layout_width="wrap_content"
34+
android:layout_marginLeft="20dp"/>
35+
</LinearLayout>
36+
37+
<ListView
38+
android:id="@+id/list_threading_log"
39+
android:layout_height="match_parent"
40+
android:layout_width="match_parent"/>
41+
</LinearLayout>
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,21 @@
1111
tools:context=".DemoActivity">
1212

1313
<Button
14-
android:id="@+id/demo_long_bg"
14+
android:id="@+id/btn_demo_schedulers"
1515
android:layout_height="wrap_content"
1616
android:layout_width="wrap_content"
17-
android:text="@string/demo_type_long_bg"/>
17+
android:text="@string/btn_demo_schedulers"/>
1818

1919
<Button
20-
android:id="@+id/demo_accumulate_event"
20+
android:id="@+id/btn_demo_buffer"
2121
android:layout_height="wrap_content"
2222
android:layout_width="wrap_content"
23-
android:text="@string/demo_type_accumulate"/>
23+
android:text="@string/btn_demo_buffer"/>
24+
25+
<Button
26+
android:id="@+id/btn_demo_throttle"
27+
android:layout_height="wrap_content"
28+
android:layout_width="wrap_content"
29+
android:text="@string/btn_demo_throttle"/>
2430

2531
</LinearLayout>

app/src/main/res/values/strings.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
<string name="app_name">Android-RxJava</string>
55
<string name="hello_world">Hello world!</string>
66
<string name="action_settings">Settings</string>
7-
<string name="demo_type_long_bg">long operation in bg (schedulers)</string>
8-
<string name="demo_type_accumulate">accumulate events (instant search)</string>
9-
<string name="demo_accumulate_msg">This is a demonstration of how events are accumulated. Tap the button below repetitively and you will notice in the logs that button taps are collected over a span of 2s and printed below.</string>
7+
8+
<string name="msg_demo_buffer">This is a demo of how events can be accumulated using the "buffer" operation. Tap the button below repetitively and you will notice in the logs that button taps are collected over a span of 2s and printed below.</string>
9+
<string name="msg_demo_concurrency_schedulers">This is a demo of how long running operations can be offloaded to a background thread. After the operation is done, we resume back on the main thread. All using RxJava!</string>
10+
11+
<string name="btn_demo_schedulers">bg work (schedulers &amp; concurrency)</string>
12+
<string name="btn_demo_buffer">accumulate calls (buffer)</string>
13+
<string name="btn_demo_throttle">instant search (throttle)</string>
1014

1115
</resources>

0 commit comments

Comments
 (0)