Ich lerne RxJava auf Android. Ich möchte es mit dem Netzwerk verwenden, also kann ich keine Sachen im Haupt-Thread machen.Wie Observable.from (Zukunft) zu verwenden?
Ich habe den folgenden Code:
final String RXTAG = "Rx";
Log.d(RXTAG, "Starting Rx experiment");
final FutureTask<String> future = new FutureTask<>(new Callable<String>() {
@Override
public String call() throws InterruptedException {
Log.d(RXTAG, "Callable called on thread " + Thread.currentThread().getName());
Utils.assertNotUIThread();
Thread.sleep(TimeUnit.SECONDS.toMillis(1)); // Simulates network latency
return "hello";
}
});
Observable.from(future, Schedulers.io()).timeout(5, TimeUnit.SECONDS).subscribe(
new Action1<String>() {
@Override
public void call(final String s) {
Log.d(RXTAG, "Next " + s);
}
},
new Action1<Throwable>() {
@Override
public void call(final Throwable throwable) {
Log.w(RXTAG, throwable);
}
},
new Action0() {
@Override
public void call() {
Log.d(RXTAG, "Completed");
}
}
);
Aber es endet mit TimeoutException
nach 5 secunds und die aufrufbare genannt Protokoll wird nie gezeigt. Was ist falsch und wie funktioniert es?
vielleicht sollten Sie Vertx logger 'io.vertxt.core.logging.Logger;' für Log-Nachricht zu zeigen. –
Es ist kein Logger-Problem. Das erste Protokoll wird angezeigt, und auch das Protokoll mit Fehler. Und wenn ich 'Observable.just()' verwende, wird auch das nächste Protokoll angezeigt. – Pitel
Entschuldigung, ich bin falsch mit vertx –