RxJava老式demo,供参考
//取消订阅,为了线程安全
Subscription subscription;
subscription = Observable.just("123").subscribe(new Action1<String>() {
@Override
public void call(String s) {
System.out.println("tt--" + s);
}
});
subscription.unsubscribe();
//样例1
Observable.create(new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> subscriber) {
subscriber.onNext(1001);
subscriber.onNext(1002);
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io())//子线程(读写文件、读写数据库、网络信息交互),为前面的代码指定线程
.observeOn(AndroidSchedulers.mainThread())//UI线程,可以多次切换线程,决定后续代码所在的线程
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Logger.d("onCompleted");
}
@Override
public void onError(Throwable e) {
Logger.d(e.getMessage());
}
@Override
public void onNext(Integer integer) {
Logger.d(integer);
}
});
////样例2
String imgFilePath = "images/icon.png";
Observable.just(imgFilePath).map(new Func1<String, Bitmap>() {
@Override
public Bitmap call(String imgFilePath) {
return getBitmapFromPath(imgFilePath);
}
})
.subscribeOn(Schedulers.io())//子线程(读写文件、读写数据库、网络信息交互),为前面的代码指定线程
.observeOn(AndroidSchedulers.mainThread())//UI线程,可以多次切换线程,决定后续代码所在的线程
.subscribe(new Subscriber<Bitmap>() {
@Override
public void onCompleted() {
Logger.d("onCompleted");
}
@Override
public void onError(Throwable e) {
Logger.d(e.getMessage());
}
@Override
public void onNext(Bitmap bitmap) {
iv.setImageBitmap(bitmap);
}
});
//样例3
Observable.just(1, 2, 3, 4).scan(new Func2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer integer, Integer integer2) {
Logger.d(integer + "+" + integer2);
return integer + integer2;
}
})
.subscribeOn(Schedulers.io())//子线程(读写文件、读写数据库、网络信息交互),只能定义一次为前面的代码指定线程
.observeOn(AndroidSchedulers.mainThread())//UI线程,可以多次切换线程,决定后续代码所在的线程
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Logger.d("onCompleted");
}
@Override
public void onError(Throwable e) {
Logger.d(e.getMessage());
}
@Override
public void onNext(Integer integer) {
Logger.d(integer);
}
});
//样例4
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
Logger.v("rx_call", Thread.currentThread().getName());
subscriber.onNext("dd");
subscriber.onCompleted();
}
})
.map(new Func1<String, String>() {
@Override
public String call(String s) {
Logger.v("rx_map", Thread.currentThread().getName());
return s + "88";
}
})
.subscribeOn(Schedulers.io())//子线程(读写文件、读写数据库、网络信息交互),只能定义一次为前面的代码指定线程
.observeOn(AndroidSchedulers.mainThread())//UI线程,可以多次切换线程,决定后续代码所在的线程
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Logger.v("rx_subscribe", Thread.currentThread().getName());
}
});

904

被折叠的 条评论
为什么被折叠?



