Skip to content

Commit 607c43d

Browse files
committed
加入复用订阅者Demo
1 parent a360df1 commit 607c43d

6 files changed

Lines changed: 117 additions & 1 deletion

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.che58.ljb.rxjava.fragment;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.view.LayoutInflater;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
import android.widget.Toast;
9+
10+
import com.che58.ljb.rxjava.R;
11+
import com.trello.rxlifecycle.components.support.RxFragment;
12+
13+
import butterknife.ButterKnife;
14+
import butterknife.OnClick;
15+
import rx.Observable;
16+
import rx.Observer;
17+
import rx.android.schedulers.AndroidSchedulers;
18+
19+
/**
20+
* 复用订阅者Demo
21+
* Created by ljb on 2016/4/29.
22+
*/
23+
public class ReuseSubscriberFragment extends RxFragment {
24+
25+
26+
private Observer mReuseSubscriber;
27+
28+
@Nullable
29+
@Override
30+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
31+
View view = inflater.inflate(R.layout.fragment_reuse_subscriber, null);
32+
ButterKnife.bind(this, view);
33+
return view;
34+
}
35+
36+
@Override
37+
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
38+
super.onActivityCreated(savedInstanceState);
39+
initData();
40+
}
41+
42+
private void initData() {
43+
//订阅者
44+
mReuseSubscriber = new Observer<Object>() {
45+
@Override
46+
public void onCompleted() {
47+
48+
}
49+
50+
@Override
51+
public void onError(Throwable e) {
52+
53+
}
54+
55+
@Override
56+
public void onNext(Object data) {
57+
if (data.getClass() == Integer.class) {
58+
Toast.makeText(getActivity(), "The data from Btn1!", Toast.LENGTH_SHORT).show();
59+
} else if (data.getClass() == String.class) {
60+
Toast.makeText(getActivity(), "The data from Btn2!", Toast.LENGTH_SHORT).show();
61+
}
62+
}
63+
64+
//被观察者1
65+
@OnClick(R.id.btn1)
66+
void btn1() {
67+
Observable.just(1)
68+
.compose(this.<Integer>bindToLifecycle())
69+
.observeOn(AndroidSchedulers.mainThread())
70+
.subscribe(mReuseSubscriber);
71+
}
72+
73+
//被观察者2
74+
@OnClick(R.id.btn2)
75+
void btn2() {
76+
Observable.just("string")
77+
.compose(this.<String>bindToLifecycle())
78+
.observeOn(AndroidSchedulers.mainThread())
79+
.subscribe(mReuseSubscriber);
80+
}
81+
}

app/src/main/java/com/che58/ljb/rxjava/fragment/main/MainFragment.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.che58.ljb.rxjava.fragment.MergeFragment;
1515
import com.che58.ljb.rxjava.fragment.Net2Fragment;
1616
import com.che58.ljb.rxjava.fragment.PublishSubjectFragment;
17+
import com.che58.ljb.rxjava.fragment.ReuseSubscriberFragment;
1718
import com.che58.ljb.rxjava.fragment.TimerFragment;
1819
import com.che58.ljb.rxjava.fragment.ZipFragment;
1920
import com.che58.ljb.rxjava.fragment.NetFragment;
@@ -98,6 +99,10 @@ void btn_rxbus() {
9899
open(new RxBusDemoFragment());
99100
}
100101

102+
@OnClick(R.id.btn_reuse_subscriber)
103+
void btn_reuseSubscriber(){
104+
open(new ReuseSubscriberFragment());
105+
}
101106
/**
102107
* 开启新的Fragment
103108
*/

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,10 @@
6868
style="@style/style_btn"
6969
android:text="@string/btn_rxbus" />
7070

71+
<Button
72+
android:id="@+id/btn_reuse_subscriber"
73+
style="@style/style_btn"
74+
android:text="@string/btn_reuse_subscriber" />
75+
7176
</LinearLayout>
7277
</ScrollView>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
android:orientation="vertical">
6+
7+
8+
<TextView
9+
style="@style/style_text"
10+
android:text="@string/des_demo_reuse" />
11+
12+
<Button
13+
android:id="@+id/btn1"
14+
style="@style/style_btn"
15+
android:text="@string/Observable1" />
16+
17+
<Button
18+
android:id="@+id/btn2"
19+
style="@style/style_btn"
20+
android:text="@string/Observable2" />
21+
22+
</LinearLayout>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
android:background="@android:color/white"
43
xmlns:wheel="http://schemas.android.com/apk/res-auto"
54
android:layout_width="match_parent"
65
android:layout_height="match_parent">

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,9 @@
4141
<string name="send_bottom">发送给底部Fragment</string>
4242
<string name="msg_demo_rxbus_1">这是一个通过RxJava实现的RxBus Demo\r\n上下分别为两个Fragment , TopFragment被点击 , 会通知BottomFragment中的两个监听者,一个监听者负责每次触发显示Tap文本,另一个监听者负责每次点击缓冲1秒统计总点击数,并显示出来</string>
4343
<string name="btn_rxbus">rxbus</string>
44+
<string name="btn_reuse_subscriber">复用订阅者</string>
45+
<string name="Observable1">被订阅者1</string>
46+
<string name="Observable2">被订阅者2</string>
47+
<string name="des_demo_reuse">这是一个演示一个订阅者订阅多个被订阅者Demo</string>
4448

4549
</resources>

0 commit comments

Comments
 (0)