Frage

Ich versuche, Retrofit+OkHttp auf Android zu erkunden.Hier ist ein Code, den ich online gefunden habe:

RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor)
.setClient(new OkClient(okHttpClient))
.setServer("blah").toString())
.build();

Wenn ich den Executor-Dienst nicht verwende, wird mein Code dann im Hauptthread ausgeführt?Sollte ich daher Webanfragen in einem neuen Thread stellen?

War es hilfreich?

Lösung

Die Methode, die einen Wert zurückgibt, leistet es synchron.

generasacodicetagpre.

Um es asynchron zu machen, ist alles, was Sie brauchen, ist, einen Rückruf hinzuzufügen.

generasacodicetagpre.

hoffe das hilft.

Grüße!

Andere Tipps

Retrofit-Methoden können entweder für die synchrone oder asynchrone Ausführung deklariert werden.

Eine Methode mit einem Rückgabetyp wird synchron ausgeführt.

@GET("/user/{id}/photo")
Photo getUserPhoto(@Path("id") int id);

Für die asynchrone Ausführung muss der letzte Parameter der Methode a sein Callback.

@GET("/user/{id}/photo")
void getUserPhoto(@Path("id") int id, Callback<Photo> cb);

Unter Android werden Rückrufe im Hauptthread ausgeführt.Bei Desktop-Anwendungen erfolgen Rückrufe im selben Thread, der die HTTP-Anfrage ausgeführt hat.

Retrofit integriert auch RxJava, um Methoden mit einem Rückgabetyp zu unterstützen rx.Observable

@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);

Beobachtbare Anfragen werden asynchron abonniert und im selben Thread beobachtet, der die HTTP-Anfrage ausgeführt hat.Um in einem anderen Thread zu beobachten (z. B.Android-Hauptthread) aufrufen observeOn(Scheduler) auf der zurückgegebenen Observable.

Notiz:Die RxJava-Integration ist experimentell.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top