我正在使用Google提供的架构最佳做法编写一个android应用。我已使用该活动对内部调用存储库的viewmodel进行了调用。在其中一个业务流程中,我需要执行以下一系列步骤:
1)从返回liveData的SQLite移动数据库中的table1中获取数据。
2)基于SQLite数据库中table1中存在的字段,我需要对网络进行API调用以获取一些值。
3)从网络获得结果后,我需要更新table2和table3。
现在,由于需要对调用进行排序,因此我正在使用MediatorLiveData在onChange中添加源。但是,为了对调用进行排序,我需要继续在onchanged方法内编写代码,这会导致回调地狱问题。
由于我是Android开发的新手,有人可以指导我以正确的方式解决Android中的此调用嵌套问题。为此,我需要使用RxJava2吗?作为Android体系结构的指导原则,仅告诉我们有关LiveData的问题,想知道是否可以使用LiveData来提供一种更清洁的方法。
//从SQLite获取数据
LiveData liveData1 = repository.getTable1Record();
liveDataMerger.addSource(liveData1,新的Observer(){
@Override public void onChanged(@Nullable Table1Row row) {
liveDataMerger.removeSource(liveData1);
// Fetch data from network
LiveData liveData2 = repository.getRecordFromServerOverNetwork();
liveDataMerger.addSource(liveData2, new Observer() {
@Override public void onChanged(@Nullable Table1Row row) {
liveDataMerger.removeSource(liveData2);
// Fetch data from database again from another table
LiveData liveData3 = repository.getTable2Record();
liveDataMerger.addSource(liveData3, new Observer() {
@Override public void onChanged(@Nullable Table2Row row) {
liveDataMerger.setValue(row.MyValue);
}
}
}
}
}
});