gpt4 book ai didi

java - RxJava observeOn Android/HarmonyOS 主线程

转载 作者:行者123 更新时间:2023-12-05 00:00:14 25 4
gpt4 key购买 nike

我正在开发华为 HarmonyOS 应用程序,我正在尝试使用 RxJava 为后台任务实现一个基类。我的问题是我不知道如何在主线程上观察。

在常规 Android 上,我会使用 AndroidSchedulers.mainThread()

但是我可以在 HarmonyOS 上使用什么,分别是基本的 java 应用程序?

public abstract class BaseUseCase<I, O> {

private final CompositeDisposable disposables;

public BaseUseCase() {
this.disposables = new CompositeDisposable();
}

/**
* Builds an {@link Observable} which will be used when executing the current {@link BaseUseCase}.
*/
public abstract Observable<O> observable(I input);


/**
* Executes the current use case.
*
* @param observer {@link DisposableObserver} which will be listening to the observable build
* by {@link #observable(I)} ()} method.
* @param input Parameters (Optional) used to build/execute this use case.
*/
public void execute(DisposableObserver<O> observer, I input) {
Preconditions.checkNotNull(observer);
final Observable<O> observable = observable(input)
.subscribeOn(Schedulers.io())
.observeOn( ??? ); <- What here???
addDisposable(observable.subscribeWith(observer));
}


/**
* Dispose from current {@link CompositeDisposable}.
*/
private void addDisposable(Disposable disposable) {
Preconditions.checkNotNull(disposable);
Preconditions.checkNotNull(disposables);
disposables.add(disposable);
}

附言。我使用了 Fernando Cejas 的建筑概念 https://fernandocejas.com/blog/engineering/2014-09-03-architecting-android-the-clean-way/

最佳答案

感谢 akarnokd 的回答!似乎有效。

为了澄清,我在 BaseUseCase 中注入(inject)了 UiExecutor 并将其用作:

.observeOn(Schedulers.from(uiExecutor));

@Singleton
public class UiExecutor implements Executor {

TaskDispatcher dispatcher;

@Inject
public UiExecutor(AbilityPackage abilityPackage) {
this.dispatcher = abilityPackage.getUITaskDispatcher();
}

@Override
public void execute(Runnable runnable) {
dispatcher.asyncDispatch(runnable);
}
}

关于java - RxJava observeOn Android/HarmonyOS 主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73067739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com