Skip to content

Commit 3692dfa

Browse files
Add RxBusExample
1 parent c8ae50b commit 3692dfa

File tree

9 files changed

+186
-0
lines changed

9 files changed

+186
-0
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
<activity
2525
android:name=".ui.networking.NetworkingActivity"
2626
android:label="@string/networking" />
27+
<activity
28+
android:name=".ui.rxbus.RxBusActivity"
29+
android:label="@string/rx_bus" />
2730
<activity
2831
android:name=".ui.operators.SimpleExampleActivity"
2932
android:label="@string/simple" />

app/src/main/java/com/rxjava2/android/samples/MyApplication.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,41 @@
22

33
import android.app.Application;
44

5+
import com.rxjava2.android.samples.model.Events;
6+
import com.rxjava2.android.samples.ui.rxbus.RxBus;
7+
8+
import java.util.concurrent.TimeUnit;
9+
10+
import io.reactivex.Observable;
11+
import io.reactivex.functions.Consumer;
12+
513
/**
614
* Created by threshold on 2017/1/12.
715
*/
816

917
public class MyApplication extends Application {
1018

1119
public static final String TAG = "MyApplication";
20+
private RxBus bus;
1221

1322
@Override
1423
public void onCreate() {
1524
super.onCreate();
25+
bus = new RxBus();
26+
}
27+
28+
public RxBus bus() {
29+
return bus;
30+
}
31+
32+
public void sendAutoEvent() {
33+
Observable.timer(2, TimeUnit.SECONDS)
34+
.subscribe(new Consumer<Long>() {
35+
@Override
36+
public void accept(Long aLong) throws Exception {
37+
bus.send(new Events.AutoEvent());
38+
}
39+
});
1640
}
1741

1842
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.rxjava2.android.samples.model;
2+
3+
/**
4+
* Created by amitshekhar on 06/02/17.
5+
*/
6+
7+
public class Events {
8+
9+
private Events() {
10+
11+
}
12+
13+
public static class TapEvent {
14+
15+
}
16+
17+
public static class AutoEvent {
18+
19+
}
20+
21+
}

app/src/main/java/com/rxjava2/android/samples/ui/SelectionActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import android.support.v7.app.AppCompatActivity;
66
import android.view.View;
77

8+
import com.rxjava2.android.samples.MyApplication;
89
import com.rxjava2.android.samples.R;
910
import com.rxjava2.android.samples.ui.networking.NetworkingActivity;
11+
import com.rxjava2.android.samples.ui.rxbus.RxBusActivity;
1012

1113
public class SelectionActivity extends AppCompatActivity {
1214

@@ -24,4 +26,8 @@ public void startNetworkingActivity(View view) {
2426
startActivity(new Intent(SelectionActivity.this, NetworkingActivity.class));
2527
}
2628

29+
public void startRxBusActivity(View view) {
30+
((MyApplication) getApplication()).sendAutoEvent();
31+
startActivity(new Intent(SelectionActivity.this, RxBusActivity.class));
32+
}
2733
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.rxjava2.android.samples.ui.rxbus;
2+
3+
import io.reactivex.Observable;
4+
import io.reactivex.subjects.PublishSubject;
5+
6+
/**
7+
* Created by amitshekhar on 06/02/17.
8+
*/
9+
10+
public class RxBus {
11+
12+
public RxBus() {
13+
}
14+
15+
private PublishSubject<Object> bus = PublishSubject.create();
16+
17+
public void send(Object o) {
18+
bus.onNext(o);
19+
}
20+
21+
public Observable<Object> toObserverable() {
22+
return bus;
23+
}
24+
25+
public boolean hasObservers() {
26+
return bus.hasObservers();
27+
}
28+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.rxjava2.android.samples.ui.rxbus;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.AppCompatActivity;
5+
import android.view.View;
6+
import android.widget.Button;
7+
import android.widget.TextView;
8+
9+
import com.rxjava2.android.samples.MyApplication;
10+
import com.rxjava2.android.samples.R;
11+
import com.rxjava2.android.samples.model.Events;
12+
13+
import io.reactivex.android.schedulers.AndroidSchedulers;
14+
import io.reactivex.disposables.CompositeDisposable;
15+
import io.reactivex.functions.Consumer;
16+
import io.reactivex.schedulers.Schedulers;
17+
18+
/**
19+
* Created by amitshekhar on 06/02/17.
20+
*/
21+
22+
public class RxBusActivity extends AppCompatActivity {
23+
24+
public static final String TAG = RxBusActivity.class.getSimpleName();
25+
TextView textView;
26+
Button button;
27+
private final CompositeDisposable disposables = new CompositeDisposable();
28+
29+
@Override
30+
protected void onDestroy() {
31+
super.onDestroy();
32+
disposables.clear(); // do not send event after activity has been destroyed
33+
}
34+
35+
@Override
36+
protected void onCreate(Bundle savedInstanceState) {
37+
super.onCreate(savedInstanceState);
38+
setContentView(R.layout.activity_rxbus);
39+
textView = (TextView) findViewById(R.id.textView);
40+
button = (Button) findViewById(R.id.button);
41+
42+
disposables.add(((MyApplication) getApplication())
43+
.bus()
44+
.toObserverable()
45+
.subscribeOn(Schedulers.io())
46+
.observeOn(AndroidSchedulers.mainThread())
47+
.subscribe(new Consumer<Object>() {
48+
@Override
49+
public void accept(Object object) throws Exception {
50+
if (object instanceof Events.AutoEvent) {
51+
textView.setText("Auto Event Received");
52+
} else if (object instanceof Events.TapEvent) {
53+
textView.setText("Tap Event Received");
54+
}
55+
}
56+
}));
57+
58+
button.setOnClickListener(new View.OnClickListener() {
59+
@Override
60+
public void onClick(View v) {
61+
((MyApplication) getApplication())
62+
.bus()
63+
.send(new Events.TapEvent());
64+
}
65+
});
66+
}
67+
68+
69+
70+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
tools:context="com.rxjava2.android.samples.ui.rxbus.RxBusActivity">
7+
8+
<TextView
9+
android:id="@+id/textView"
10+
android:layout_width="wrap_content"
11+
android:layout_height="wrap_content"
12+
android:layout_gravity="top|center"
13+
android:layout_marginTop="12dp"
14+
android:text="Hello World!"
15+
android:textColor="@android:color/black" />
16+
17+
<Button
18+
android:id="@+id/button"
19+
android:layout_width="wrap_content"
20+
android:layout_height="wrap_content"
21+
android:layout_gravity="center"
22+
android:text="@string/click_me"
23+
android:textColor="@android:color/black" />
24+
25+
</FrameLayout>

app/src/main/res/layout/activity_selection.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,12 @@
2929
android:text="@string/networking"
3030
android:textColor="@android:color/black" />
3131

32+
<Button
33+
android:layout_width="match_parent"
34+
android:layout_height="wrap_content"
35+
android:onClick="startRxBusActivity"
36+
android:text="@string/rx_bus"
37+
android:textColor="@android:color/black" />
38+
3239
</LinearLayout>
3340
</ScrollView>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@
3535
<string name="flatMapAndFilter">flatMapAndFilter</string>
3636
<string name="flatMap">flatMap</string>
3737
<string name="flatMapWithZip">flatMapWithZip</string>
38+
<string name="click_me">Click Me</string>
39+
<string name="rx_bus">RxBus</string>
3840
</resources>

0 commit comments

Comments
 (0)