// 使用IO線程處理, 主線程響應
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext(某個耗時方法());
subscriber.onCompleted();
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
// 響應式運行
mRxButton.setOnClickListener(v -> {
mRxButton.setEnabled(false);
observable.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
mRxButton.setEnabled(true);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Snackbar.make(mRootView, s, Snackbar.LENGTH_LONG).show();
}
});
});
使用響應式編程可以更好的處理內存泄露問題, 代碼也更加優雅和可讀, 選擇執行線程和監聽線程也更加方便. 在destroy時, 可以關閉正在執行的異步任務