RxJava是一個用于處理異步數據流的庫,它可以讓你更簡潔地處理復雜的數據流操作
import io.reactivex.Observable;
Observable<String> observable = Observable.create(emitter -> {
emitter.onNext("Hello");
emitter.onNext("World");
emitter.onComplete();
});
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
// 訂閱時的操作,例如添加到CompositeDisposable以便在不再需要時取消訂閱
}
@Override
public void onNext(String s) {
System.out.println(s);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
System.out.println("Completed");
}
};
observable.subscribe(observer);
import io.reactivex.functions.Function;
// 使用map操作符將字符串轉換為大寫
Observable<String> upperCaseObservable = observable.map(new Function<String, String>() {
@Override
public String apply(String s) throws Exception {
return s.toUpperCase();
}
});
// 訂閱并打印結果
upperCaseObservable.subscribe(System.out::println);
import io.reactivex.schedulers.Schedulers;
// 在IO線程上執行耗時操作
observable
.subscribeOn(Schedulers.io())
.map(new Function<String, String>() {
@Override
public String apply(String s) throws Exception {
// 模擬耗時操作
Thread.sleep(1000);
return s.toUpperCase();
}
})
// 在主線程上接收結果
.observeOn(AndroidSchedulers.mainThread())
.subscribe(System.out::println);
這只是RxJava的基本用法,實際上RxJava提供了許多操作符和調度器,可以實現更復雜的數據流處理。要深入了解RxJava,請參閱官方文檔和示例。