gpt4 book ai didi

android - 带有 RxJava2 的 Firebase.jobdispatcher 不能异步工作

转载 作者:行者123 更新时间:2023-11-29 19:02:48 25 4
gpt4 key购买 nike

我正在尝试使用 RxJava2 异步启动 Firebase jobdispatcher。

@Override
public boolean onStartJob(JobParameters job) {
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
startMethod();
}
}).subscribeOn(mSchedulerProvider.io())
.observeOn(mSchedulerProvider.mainThread())
.subscribeWith(new DisposableCompletableObserver() {
@Override
public void onComplete() {
LOG.debug("onComplete");
onStopJob(job);
}

@Override
public void onError(Throwable e) {

}
});
return true;
}

@Override
public boolean onStopJob(JobParameters job) {
LOG.debug("stop job");
return true;
}

当我添加 subscribeOn(mSchedulerProvider.io()) 行时 startMethod() 不会启动,如果我删除此行 startMethod() 从主线程开始。

最佳答案

我认为您的问题可能出在observeOn 语句中。我尝试复制您拥有的代码。但由于我假设您没有尝试更新 UI 线程,删除 observeOn 将允许进程在 RxCachedScheduler 线程上完成,Schedulers.io( ) 创建并且不会阻塞 UI

Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
Log.e("RXJAVA","Running on | " + Thread.currentThread().getName());
startMethod();
}
})
.subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread()) //Try comment this out
//also try subscribe instead of subscribeWith
.subscribe(new DisposableCompletableObserver() {
@Override
public void onComplete() {
System.err.println("RXJAVA onComplete | " + Thread.currentThread().getName());
Log.e("RXJAVA","onComplete | " + Thread.currentThread().getName());
}

@Override
public void onError(Throwable e) {

}
});

关于android - 带有 RxJava2 的 Firebase.jobdispatcher 不能异步工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302258/

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