Ich habe gerade angefangen zu lernen, wie RxJava 2 und Retrofit 2 in Android zu verwenden. Ich habe eine Reihe von Tutorials verfolgt und kann Daten von meinem Server abrufen. Meine Frage ist, was ist der Standard Weg, einfach auf diese abgerufenen Daten zuzugreifen. Zur Zeit analysiert GSON es in ein Objekt, ich drucke den toString, aber das ist es.Abrufen von Daten von Observable Objekt mit RxJava 2 und Retrofit 2
Ich habe diese Schnittstelle meine POST-Anforderung zu definieren:
public interface FacebookAppLoginService {
@POST("app/fbapp_login")
Observable<User> getUser(@Body FacebookAccessToken facebookAccessToken);
}
Ich schaffe das Retrofit-Objekt:
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://rocky-garden-56471.herokuapp.com/")
.build();
ich ein Objekt dann erstellen, um die JSON Körper meines POST-Anfrage zu enthalten:
FacebookAccessToken facebookAccessToken = new FacebookAccessToken();
Ich erstelle dann das Observable von meiner Schnittstelle:
SchließlichObservable<User> newUser = facebookAppLoginService.getUser(facebookAccessToken);
, ich auf die beobachtbaren abonnieren, auf der Haupt-Thread zu beobachten, aber dabei die Anforderung auf einem Arbeitsthread (glaube ich), dann log ich die Ergebnisse:
newUser.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(userInfo -> {
Log.i("Server Call", "Received: " + userInfo.toString());
});
Die toString richtig druckt die vom Server empfangenen Benutzerinformationen aus. Wie kann ich dieses Objekt in der Lambda-Funktion verwenden? Ich möchte es in der Datenbank speichern oder zumindest in einem Objekt innerhalb der Aktivität speichern. Wie soll ich das machen?