- RxJava2 实战知识梳理(10) - 屏幕旋转导致 Acti
- RxJava2 实战知识梳理(9) - 使用 timer/int
- RxJava2 实战知识梳理(8) - 使用 publish +
- RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通
- RxJava2 实战知识梳理(4) - 结合 Retrofit
- RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均
- RxJava2 实战知识梳理(15) - 实现一个简单的 MVP
- RxJava2 实战知识梳理(11) - 检测网络状态并自动重试
- RxJava2 实战知识梳理(12) - 实战讲解 publis
- RxJava2 实战知识梳理(14) - 在 token 过期时
RxTextView.textChanges(getBinding().ev)
//限流时间500ms
.debounce(500, TimeUnit.MILLISECONDS)
.observeOn(Schedulers.io())
//CharSequence转换为String
.flatMap(new Function<CharSequence, ObservableSource<Bitmap>>() {
@Override
public ObservableSource<Bitmap> apply(CharSequence charSequence) throws Throwable {
PrintLabelModel model = ScriptEngine.script2printLabelModel(charSequence.toString());
Bitmap bitmap = ModelPrintUtil.genereateBitmap(model);
// 在后台线程中执行耗时任务并返回Bitmap
return Observable.just(bitmap);
}
})
.observeOn(AndroidSchedulers.mainThread())
.to(AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(this))).subscribe(new Consumer<Bitmap>() {
@Override
public void accept(Bitmap o) throws Throwable {
}
});
在上面的代码中,observeOn(Schedulers.io())将让下游的flatMap操作符在IO线程上执行。在这里,您可以使用generateBitmap()方法执行任何耗时的任务,例如从网络下载图片或执行某些计算。一旦您生成了Bitmap,您可以使用Observable.just(bitmap)将其发送回主线程。
最后,observeOn(AndroidSchedulers.mainThread())将使下游操作符在主线程上执行,以便您可以使用生成的Bitmap执行任何UI更新。
网友评论