Skip to content

Commit 56428d0

Browse files
committed
Fix rxjava 1 -> 2 compatibility issues.
1 parent 5e88eb7 commit 56428d0

File tree

15 files changed

+161
-167
lines changed

15 files changed

+161
-167
lines changed

app/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ dependencies {
2828
compile 'com.android.support:support-v13:26.1.0'
2929
compile 'com.android.support:design:26.1.0'
3030
compile 'com.android.support:cardview-v7:26.1.0'
31-
compile 'com.squareup.okhttp3:okhttp:3.2.0'
31+
compile 'com.squareup.okhttp3:okhttp:3.8.0'
3232
compile 'com.squareup.retrofit2:retrofit:2.3.0'
3333
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
3434
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
3535
compile 'com.github.bumptech.glide:glide:4.1.1'
3636
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
37-
compile 'com.jakewharton:butterknife:8.4.0'
37+
compile 'com.jakewharton:butterknife:8.8.1'
38+
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
3839
compile 'io.reactivex.rxjava2:rxjava:2.0.7'
3940
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
4041
compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

app/src/main/java/com/rengwuxian/rxjavasamples/BaseFragment.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import android.app.Fragment;
77

88
import butterknife.OnClick;
9-
import rx.Subscription;
9+
import io.reactivex.disposables.Disposable;
1010

1111
public abstract class BaseFragment extends Fragment {
12-
protected Subscription subscription;
12+
protected Disposable disposable;
1313

1414
@OnClick(R.id.tipBt)
1515
void tip() {
@@ -26,8 +26,8 @@ public void onDestroyView() {
2626
}
2727

2828
protected void unsubscribe() {
29-
if (subscription != null && !subscription.isUnsubscribed()) {
30-
subscription.unsubscribe();
29+
if (disposable != null && !disposable.isDisposed()) {
30+
disposable.dispose();
3131
}
3232
}
3333

app/src/main/java/com/rengwuxian/rxjavasamples/module/cache_6/CacheFragment.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import butterknife.BindView;
2626
import butterknife.ButterKnife;
2727
import butterknife.OnClick;
28-
import rx.Observer;
28+
import io.reactivex.Observer;
29+
import io.reactivex.annotations.NonNull;
30+
import io.reactivex.functions.Consumer;
2931

3032
public class CacheFragment extends BaseFragment {
3133
@BindView(R.id.loadingTimeTv) TextView loadingTimeTv;
@@ -53,26 +55,22 @@ void load() {
5355
swipeRefreshLayout.setRefreshing(true);
5456
startingTime = System.currentTimeMillis();
5557
unsubscribe();
56-
subscription = Data.getInstance()
57-
.subscribeData(new Observer<List<Item>>() {
58+
disposable = Data.getInstance()
59+
.subscribeData(new Consumer<List<Item>>() {
5860
@Override
59-
public void onCompleted() {
60-
}
61-
62-
@Override
63-
public void onError(Throwable e) {
64-
e.printStackTrace();
65-
swipeRefreshLayout.setRefreshing(false);
66-
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
67-
}
68-
69-
@Override
70-
public void onNext(List<Item> items) {
61+
public void accept(@NonNull List<Item> items) throws Exception {
7162
swipeRefreshLayout.setRefreshing(false);
7263
int loadingTime = (int) (System.currentTimeMillis() - startingTime);
7364
loadingTimeTv.setText(getString(R.string.loading_time_and_source, loadingTime, Data.getInstance().getDataSourceText()));
7465
adapter.setItems(items);
7566
}
67+
}, new Consumer<Throwable>() {
68+
@Override
69+
public void accept(@NonNull Throwable throwable) throws Exception {
70+
throwable.printStackTrace();
71+
swipeRefreshLayout.setRefreshing(false);
72+
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
73+
}
7674
});
7775
}
7876

app/src/main/java/com/rengwuxian/rxjavasamples/module/cache_6/data/Data.java

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,26 @@
1313

1414
import java.util.List;
1515

16-
import rx.Observable;
17-
import rx.Observer;
18-
import rx.Subscriber;
19-
import rx.Subscription;
20-
import rx.android.schedulers.AndroidSchedulers;
21-
import rx.functions.Action1;
22-
import rx.schedulers.Schedulers;
23-
import rx.subjects.BehaviorSubject;
16+
import io.reactivex.Observable;
17+
import io.reactivex.ObservableEmitter;
18+
import io.reactivex.ObservableOnSubscribe;
19+
import io.reactivex.Observer;
20+
import io.reactivex.android.schedulers.AndroidSchedulers;
21+
import io.reactivex.disposables.Disposable;
22+
import io.reactivex.functions.Consumer;
23+
import io.reactivex.observers.DefaultObserver;
24+
import io.reactivex.schedulers.Schedulers;
25+
import io.reactivex.subjects.BehaviorSubject;
2426

2527
public class Data {
2628
private static Data instance;
2729
private static final int DATA_SOURCE_MEMORY = 1;
2830
private static final int DATA_SOURCE_DISK = 2;
2931
private static final int DATA_SOURCE_NETWORK = 3;
30-
@IntDef({DATA_SOURCE_MEMORY, DATA_SOURCE_DISK, DATA_SOURCE_NETWORK}) @interface DataSource {}
32+
33+
@IntDef({DATA_SOURCE_MEMORY, DATA_SOURCE_DISK, DATA_SOURCE_NETWORK})
34+
@interface DataSource {
35+
}
3136

3237
BehaviorSubject<List<Item>> cache;
3338

@@ -70,39 +75,39 @@ public void loadFromNetwork() {
7075
.getBeauties(100, 1)
7176
.subscribeOn(Schedulers.io())
7277
.map(GankBeautyResultToItemsMapper.getInstance())
73-
.doOnNext(new Action1<List<Item>>() {
78+
.doOnNext(new Consumer<List<Item>>() {
7479
@Override
75-
public void call(List<Item> items) {
80+
public void accept(List<Item> items) {
7681
Database.getInstance().writeItems(items);
7782
}
7883
})
79-
.subscribe(new Action1<List<Item>>() {
84+
.subscribe(new Consumer<List<Item>>() {
8085
@Override
81-
public void call(List<Item> items) {
86+
public void accept(List<Item> items) {
8287
cache.onNext(items);
8388
}
84-
}, new Action1<Throwable>() {
89+
}, new Consumer<Throwable>() {
8590
@Override
86-
public void call(Throwable throwable) {
91+
public void accept(Throwable throwable) {
8792
throwable.printStackTrace();
88-
cache.onError(throwable);
93+
cache.onError(throwable);
8994
}
9095
});
9196
}
9297

93-
public Subscription subscribeData(@NonNull Observer<List<Item>> observer) {
98+
public Disposable subscribeData(@NonNull Consumer<List<Item>> onNext, @NonNull Consumer<Throwable> onError) {
9499
if (cache == null) {
95100
cache = BehaviorSubject.create();
96-
Observable.create(new Observable.OnSubscribe<List<Item>>() {
101+
Observable.create(new ObservableOnSubscribe<List<Item>>() {
97102
@Override
98-
public void call(Subscriber<? super List<Item>> subscriber) {
103+
public void subscribe(ObservableEmitter<List<Item>> e) throws Exception {
99104
List<Item> items = Database.getInstance().readItems();
100105
if (items == null) {
101106
setDataSource(DATA_SOURCE_NETWORK);
102107
loadFromNetwork();
103108
} else {
104109
setDataSource(DATA_SOURCE_DISK);
105-
subscriber.onNext(items);
110+
e.onNext(items);
106111
}
107112
}
108113
})
@@ -111,14 +116,14 @@ public void call(Subscriber<? super List<Item>> subscriber) {
111116
} else {
112117
setDataSource(DATA_SOURCE_MEMORY);
113118
}
114-
return cache
115-
.doOnError(new Action1<Throwable>() {
116-
@Override
117-
public void call(Throwable throwable) {
118-
cache = null;
119-
}
120-
})
121-
.observeOn(AndroidSchedulers.mainThread()).subscribe(observer);
119+
return cache.doOnError(new Consumer<Throwable>() {
120+
@Override
121+
public void accept(@io.reactivex.annotations.NonNull Throwable throwable) throws Exception {
122+
cache = null;
123+
}
124+
})
125+
.observeOn(AndroidSchedulers.mainThread())
126+
.subscribe(onNext, onError);
122127
}
123128

124129
public void clearMemoryCache() {

app/src/main/java/com/rengwuxian/rxjavasamples/module/elementary_1/ElementaryFragment.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,17 @@
2525
import butterknife.BindView;
2626
import butterknife.ButterKnife;
2727
import butterknife.OnCheckedChanged;
28-
import rx.Observer;
29-
import rx.android.schedulers.AndroidSchedulers;
30-
import rx.schedulers.Schedulers;
28+
import io.reactivex.Observer;
29+
import io.reactivex.android.schedulers.AndroidSchedulers;
30+
import io.reactivex.annotations.NonNull;
31+
import io.reactivex.functions.Consumer;
32+
import io.reactivex.schedulers.Schedulers;
3133

3234
public class ElementaryFragment extends BaseFragment {
3335
@BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout swipeRefreshLayout;
3436
@BindView(R.id.gridRv) RecyclerView gridRv;
3537

3638
ZhuangbiListAdapter adapter = new ZhuangbiListAdapter();
37-
Observer<List<ZhuangbiImage>> observer = new Observer<List<ZhuangbiImage>>() {
38-
@Override
39-
public void onCompleted() {
40-
}
41-
42-
@Override
43-
public void onError(Throwable e) {
44-
swipeRefreshLayout.setRefreshing(false);
45-
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
46-
}
47-
48-
@Override
49-
public void onNext(List<ZhuangbiImage> images) {
50-
swipeRefreshLayout.setRefreshing(false);
51-
adapter.setImages(images);
52-
}
53-
};
5439

5540
@OnCheckedChanged({R.id.searchRb1, R.id.searchRb2, R.id.searchRb3, R.id.searchRb4})
5641
void onTagChecked(RadioButton searchRb, boolean checked) {
@@ -63,11 +48,23 @@ void onTagChecked(RadioButton searchRb, boolean checked) {
6348
}
6449

6550
private void search(String key) {
66-
subscription = Network.getZhuangbiApi()
51+
disposable = Network.getZhuangbiApi()
6752
.search(key)
6853
.subscribeOn(Schedulers.io())
6954
.observeOn(AndroidSchedulers.mainThread())
70-
.subscribe(observer);
55+
.subscribe(new Consumer<List<ZhuangbiImage>>() {
56+
@Override
57+
public void accept(@NonNull List<ZhuangbiImage> images) throws Exception {
58+
swipeRefreshLayout.setRefreshing(false);
59+
adapter.setImages(images);
60+
}
61+
}, new Consumer<Throwable>() {
62+
@Override
63+
public void accept(@NonNull Throwable throwable) throws Exception {
64+
swipeRefreshLayout.setRefreshing(false);
65+
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
66+
}
67+
});
7168
}
7269

7370
@Nullable

app/src/main/java/com/rengwuxian/rxjavasamples/module/map_2/MapFragment.java

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@
2727
import butterknife.BindView;
2828
import butterknife.ButterKnife;
2929
import butterknife.OnClick;
30-
import rx.Observer;
31-
import rx.android.schedulers.AndroidSchedulers;
32-
import rx.schedulers.Schedulers;
30+
import io.reactivex.Observer;
31+
import io.reactivex.android.schedulers.AndroidSchedulers;
32+
import io.reactivex.annotations.NonNull;
33+
import io.reactivex.functions.Consumer;
34+
import io.reactivex.schedulers.Schedulers;
3335

3436
public class MapFragment extends BaseFragment {
3537
private int page = 0;
@@ -40,24 +42,6 @@ public class MapFragment extends BaseFragment {
4042
@BindView(R.id.gridRv) RecyclerView gridRv;
4143

4244
ItemListAdapter adapter = new ItemListAdapter();
43-
Observer<List<Item>> observer = new Observer<List<Item>>() {
44-
@Override
45-
public void onCompleted() {
46-
}
47-
48-
@Override
49-
public void onError(Throwable e) {
50-
swipeRefreshLayout.setRefreshing(false);
51-
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
52-
}
53-
54-
@Override
55-
public void onNext(List<Item> images) {
56-
swipeRefreshLayout.setRefreshing(false);
57-
pageTv.setText(getString(R.string.page_with_number, page));
58-
adapter.setItems(images);
59-
}
60-
};
6145

6246
@OnClick(R.id.previousPageBt)
6347
void previousPage() {
@@ -78,12 +62,25 @@ void nextPage() {
7862
private void loadPage(int page) {
7963
swipeRefreshLayout.setRefreshing(true);
8064
unsubscribe();
81-
subscription = Network.getGankApi()
65+
disposable = Network.getGankApi()
8266
.getBeauties(10, page)
8367
.map(GankBeautyResultToItemsMapper.getInstance())
8468
.subscribeOn(Schedulers.io())
8569
.observeOn(AndroidSchedulers.mainThread())
86-
.subscribe(observer);
70+
.subscribe(new Consumer<List<Item>>() {
71+
@Override
72+
public void accept(@NonNull List<Item> items) throws Exception {
73+
swipeRefreshLayout.setRefreshing(false);
74+
pageTv.setText(getString(R.string.page_with_number, MapFragment.this.page));
75+
adapter.setItems(items);
76+
}
77+
}, new Consumer<Throwable>() {
78+
@Override
79+
public void accept(@NonNull Throwable throwable) throws Exception {
80+
swipeRefreshLayout.setRefreshing(false);
81+
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
82+
}
83+
});
8784
}
8885

8986
@Nullable

app/src/main/java/com/rengwuxian/rxjavasamples/module/token_4/TokenFragment.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import butterknife.BindView;
2323
import butterknife.ButterKnife;
2424
import butterknife.OnClick;
25-
import rx.Observable;
26-
import rx.android.schedulers.AndroidSchedulers;
27-
import rx.functions.Action1;
28-
import rx.functions.Func1;
29-
import rx.schedulers.Schedulers;
25+
import io.reactivex.Observable;
26+
import io.reactivex.android.schedulers.AndroidSchedulers;
27+
import io.reactivex.functions.Consumer;
28+
import io.reactivex.functions.Function;
29+
import io.reactivex.schedulers.Schedulers;
3030

3131
public class TokenFragment extends BaseFragment {
3232

@@ -38,24 +38,24 @@ void upload() {
3838
swipeRefreshLayout.setRefreshing(true);
3939
unsubscribe();
4040
final FakeApi fakeApi = Network.getFakeApi();
41-
subscription = fakeApi.getFakeToken("fake_auth_code")
42-
.flatMap(new Func1<FakeToken, Observable<FakeThing>>() {
41+
disposable = fakeApi.getFakeToken("fake_auth_code")
42+
.flatMap(new Function<FakeToken, Observable<FakeThing>>() {
4343
@Override
44-
public Observable<FakeThing> call(FakeToken fakeToken) {
44+
public Observable<FakeThing> apply(FakeToken fakeToken) {
4545
return fakeApi.getFakeData(fakeToken);
4646
}
4747
})
4848
.subscribeOn(Schedulers.io())
4949
.observeOn(AndroidSchedulers.mainThread())
50-
.subscribe(new Action1<FakeThing>() {
50+
.subscribe(new Consumer<FakeThing>() {
5151
@Override
52-
public void call(FakeThing fakeData) {
52+
public void accept(FakeThing fakeData) {
5353
swipeRefreshLayout.setRefreshing(false);
5454
tokenTv.setText(getString(R.string.got_data, fakeData.id, fakeData.name));
5555
}
56-
}, new Action1<Throwable>() {
56+
}, new Consumer<Throwable>() {
5757
@Override
58-
public void call(Throwable throwable) {
58+
public void accept(Throwable throwable) {
5959
swipeRefreshLayout.setRefreshing(false);
6060
Toast.makeText(getActivity(), R.string.loading_failed, Toast.LENGTH_SHORT).show();
6161
}

0 commit comments

Comments
 (0)