gpt4 book ai didi

android - Observable 运行在主线程的 onNext 中接收到的 Runnables,在项目之间有延迟

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:07 32 4
gpt4 key购买 nike

我想让 Observable 运行在主线程的 onNext 中接收到的 Runnable,并且项目之间有延迟(在我的代码 fragment 中是 2 秒)。

到目前为止我有:

Subscription xxx = Observable
.create(new Observable.OnSubscribe<Runnable>() {
@Override
public void call(Subscriber<? super Runnable> subscriber) {
gate = subscriber;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.delay(2, TimeUnit.SECONDS)
.subscribe(new Action1<Runnable>() {
@Override
public void call(Runnable runnable) {
Log.d(TAG, "call " + Thread.currentThread().toString());
runnable.run();
}
});

然后某个线程的某处调用了 gate 实例的 onNext 方法,例如:

Log.d(TAG, "gate requested on thread " + Thread.currentThread().toString());
gate.onNext(new Runnable() {
@Override
public void run() {
Log.d(TAG, "make it on thread " + Thread.currentThread().toString());
}
});

但是......它并没有像我想要的那样工作。我想要的是:.observeOn(AndroidSchedulers.mainThread()) 假设在主线程上运行 Runnables;但它在“RxComputationScheduler-2”上运行。

我得到如下输出:

gate requested on thread Thread[Binder_2,5,main]
gate call Thread[RxComputationScheduler-2,5,main]
gate make on thread Thread[RxComputationScheduler-2,5,main]

最佳答案

改变:

.observeOn(AndroidSchedulers.mainThread())
.delay(2, TimeUnit.SECONDS)

到:

.delay(2, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())

关于android - Observable 运行在主线程的 onNext 中接收到的 Runnables,在项目之间有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38128267/

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