美文网首页
android rxjava文本改变 切换后台执行 耗时处理完毕

android rxjava文本改变 切换后台执行 耗时处理完毕

作者: 吉凶以情迁 | 来源:发表于2023-03-12 14:28 被阅读0次
     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更新。

相关文章

网友评论

      本文标题:android rxjava文本改变 切换后台执行 耗时处理完毕

      本文链接:https://www.haomeiwen.com/subject/xrzfrdtx.html