Also, ich bin ein Anfänger Android-Programmierer versuchen, RxJava/RxAndroid zu lernen.Refactoring ein Standard-Android-Code in Reactive-Code
Die App, die ich entwickle, um zu studieren, hat eine lokale Datenbank (mit Schrank), die von einer API unterstützt wird. Es hat zwei Bildschirme: Einer zeigt eine Liste von Elementen und andere die Details der Elemente. Jedes Mal, wenn ich brauche, um die Elemente zu zeigen, dass ich diese Methode aufrufen, um sie von meiner lokalen Datenbank zu laden und:
public void getItems() {
List<Item> Items = cupboard().withDatabase(database).query(Item.class).list();
if (Items == null || Items.isEmpty()) {
service.listItems().enqueue(new Callback<Items>() {
@Override
public void onResponse(Call<Items> call, Response<Items> response) {
if (response.isSuccessful()) {
cupboard().withDatabase(database).put(response.body().getItems());
mDataReceiver.onItemsLoaded(response.body().getItems());
} else {
Log.d(ItemsLoader.class.getSimpleName(), response.message());
}
}
@Override
public void onFailure(Call<Items> call, Throwable t) {
Log.d(ItemsLoader.class.getSimpleName(), t.getMessage());
}
});
} else {
mDataReceiver.onItemsLoaded(Items);
}
}
Wenn nichts (leere Liste oder null
) zurückgeführt wird, ich sie von der API laden, speichern Sie es in meinem lokalen Datenbank und gibt es an den Benutzer zurück.
Ich habe versucht, diesen Code in reaktive umzuformen (mit RxJava, RxAndroid und RxCupboard) durch Verkettung meiner Datenbankaufrufe mit dem API-Aufruf, wenn nötig, mit FlatMap, aber ich konnte es einfach nicht funktionieren noch wickeln meinen Kopf herum es.
Ist es möglich, diesen Code in Reactive umzuwandeln oder sollte ich diesen Weg verlassen? Wenn möglich, was wäre der richtige Weg?