- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感觉我在这里遗漏了一些东西,但我曾经这样做过:
Schedulers.io().schedule(new Action1<Scheduler.Inner>() {
@Override
public void call(Scheduler.Inner inner) {
doWhatever();
}
});
final Worker worker = Schedulers.io().createWorker();
worker.schedule(new Action0() {
@Override
public void call() {
doWhatever();
worker.unsubscribe();
}
});
最佳答案
在 Observable 中使用调度程序
如果您使用 RxJava,我认为您应该让 Observables 处理调度程序。在我的代码中,我认为我不必创建自己的 worker 并对其进行管理。
将 Observable 与 Scheduler 一起使用并在两种线程类型之间切换的示例。
public void doSomething() {
Observable
.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Void> subscriber) {
int sleepTime = (int) (Math.random() * 10000);
System.out.println("Running on: " + Thread.currentThread().getId() + " sleep: " + sleepTime);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
System.out.println("Error!!! " + Thread.currentThread().getId());
subscriber.onError(e);
return;
}
System.out.println("Done!!! " + Thread.currentThread().getId());
subscriber.onNext(true);
subscriber.onCompleted();
}
})
// this will schedule your work in a background io thread. In this example the "call" method above.
.subscribeOn(Schedulers.io())
// this will schedule your next/complete/error on the androids main thread.
.observeOn(AndroidSchedulers.mainThread())
// kick off the actual work.
.subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
// runs in main thread.
}
@Override
public void onError(Throwable e) {
// runs in main thread.
}
@Override
public void onNext(Boolean result) {
// runs in main thread.
}
});
}
public static void runAction(Action0 action, Scheduler scheduler) {
Scheduler.Worker worker = scheduler.createWorker();
worker.schedule(new Action0() {
@Override
public void call() {
action.call();
worker.unsubscribe();
}
});
}
SchedulerUtil.runAction(new Action0() {
@Override
public void call() {
int sleepTime = (int) (Math.random() * 10000);
System.out.println("Running on: " + Thread.currentThread().getId() + " sleep: " + sleepTime);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException ignored) {
}
System.out.println("Done!!! " + Thread.currentThread().getId());
}
}, Schedulers.io());
关于rx-java - 在 0.18 中,后台任务如何在调度程序上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279995/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
所以我正在开发一个黑 jack 程序,但我有点卡住了。我会警告大家,我对编程真的很陌生,而且,我正在项目中期......所以有一些松散的结局和未使用的变量,以及一些不必要的逻辑(用于测试),但这就是我
我正在尝试创建一个可用作 OpenGL 测试工具的示例程序。到目前为止,我的那个似乎可以工作,但似乎忽略了通过统一变量 MVPMatrix 传递的 MVP 矩阵。当我添加代码以读回制服并检查它是否确实
感谢您帮助我,这是有关我的代码的部分。 printf("Thank you, now please enter the logic gate"); scanf("%s", &C); if (C ==
public static void ejemplosString(String palabra){ char[] letras = palabra.toCharArray();
所以,我有一个 php 应用程序,通过 cgi 和 nginx 运行。我有一个 .jar 程序,用于在条形码打印机(Zebra)上打印条形码,猜猜看是什么!。 我的 php 应用程序使用 exec()
我遇到的唯一问题是 getAll() 方法,它似乎在 PersonnelController 类中的位置立即运行。我也曾在其他很多地方尝试过,但都没有成功。 setAll() 方法看起来不错,我已经测
我是一名优秀的程序员,十分优秀!