Android 从多个RESTful源创建复合数据列表的方法

Android 从多个RESTful源创建复合数据列表的方法,android,design-patterns,retrofit,spotify,Android,Design Patterns,Retrofit,Spotify,希望这个问题不要太高。 目前我正在开发一个Android应用程序,该应用程序连接到Spotify Web API(使用改型),最终结果是一个曲目列表,该列表由从其他API调用收集的数据生成,例如用户热门曲目、顶级艺术家等。。。因为我需要的最终结果是由几个不同的API调用构造的,所以我担心逻辑有点混乱,目前基本上是: getFirstBitofRequiredData -> onDataReady -> getNextBitofData -> OnDataReady -

希望这个问题不要太高。 目前我正在开发一个Android应用程序,该应用程序连接到Spotify Web API(使用改型),最终结果是一个曲目列表,该列表由从其他API调用收集的数据生成,例如用户热门曲目、顶级艺术家等。。。因为我需要的最终结果是由几个不同的API调用构造的,所以我担心逻辑有点混乱,目前基本上是:

getFirstBitofRequiredData -> onDataReady -> getNextBitofData ->      OnDataReady -> getMoreData(combinedDataSets) -> onDataReady -> createDataModelObjectsForView(moreCombinedDataSets)
反正是这样的!我想知道有没有具体的体系结构方法来实现这种获取数据的顺序和组合方法

提前感谢,


加里

这不是一个完整的答案,但应该可以帮助你更多地了解Rx。主要的一点是,使用Rx,您可以在通话线路中执行所有这些操作。这意味着,调用回调不会遍布整个类,并且很容易阅读/理解正在发生的事情

我要输入一个伪代码,全部记在心上,所以你必须实际挖掘文档,看看如何操作。但它应该以你想要实现的目标为例

Data1 d1;
Data2 d2;
Data3 d3;

retrofit.getData1(param) // the retrofit observable
        .flatMap(new Function<Data1, ObservableSource<Data2>() {
            @Override
            public Observable<Data2> call(Data1 data1){
                   d1 = data1;
                   return retrofit.getData2(data1.val);
            }
         });
        .flatMap(new Function<Data2, ObservableSource<Data3>() {
            @Override
            public Observable<Data3> call(Data2 data2){
                   d2 = data2;
                   return retrofit.getData3(data2.val);
            }
         })
         .observeOn(... UI thread)
         .subscribe( ...
              ... now you have all the data here ...
data1d1;
数据2 d2;
数据3-d3;
getData1(param)//可以观察到的改装

.平面图(新功能检查RxJava2。将所有这些回调放在1 fluent API中非常简单。实际上,我正在使用RxAndroid适配器进行改装,以作为可观察的返回,但也许我在这方面没有充分利用它们?我将从更高的层次上再看一看他们的API,看看我是否能找到它。感谢您的推荐!太棒了这很有道理,看起来是一种非常可读且简洁的方法,可以在它们出现时对它们进行排序。我今天就试试看,我们打算选择一些CombineTest的用法,但我认为这在这种情况下更有意义。非常感谢!