1
因此,我是一位試圖學習RxJava/RxAndroid的新手Android程序員。將一個標準Android代碼重構爲Reactive代碼
我正在開發的應用程序有一個本地數據庫(使用櫥櫃),由API支持。它有兩個屏幕:一個顯示項目列表和其他項目細節。每當我需要顯示的項目我把這個方法從我的本地數據庫加載它們和:
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);
}
}
如果不返回任何(空列表或null
),我從API加載它們,將其保存在我的地方數據庫並將其返回給用戶。
我試圖通過使用API調用將數據庫調用鏈接到響應(使用RxJava,RxAndroid和RxCupboard),在需要時使用flatMap來重構此代碼,但是我無法使其工作,也無法繞過我的頭它。
是否有可能將此代碼重構爲Reactive或者我應該離開這種方式?如果可能的話,什麼是正確的方法來做到這一點?