Android 如何使用改型和RXJava多次调用相同的API

Android 如何使用改型和RXJava多次调用相同的API,android,api,retrofit2,rx-android,rx-java2,Android,Api,Retrofit2,Rx Android,Rx Java2,嗯。因此,API文档说明: 通过更改“开始”和“计数”参数,最多可获得100家餐厅,计数的最大值为 20. API链接: 这是示例代码: restaurantList = new ArrayList<>(); restaurantFinderAPI = RetrofitClient.getRetrofitClientAPI(); restaurantScheduler = Schedulers.newThread(); for (int i = 0; i &

嗯。因此,API文档说明:

通过更改“开始”和“计数”参数,最多可获得100家餐厅,计数的最大值为 20. API链接:

这是示例代码:

restaurantList = new ArrayList<>();
    restaurantFinderAPI = RetrofitClient.getRetrofitClientAPI();
    restaurantScheduler = Schedulers.newThread();

    for (int i = 0; i <= 80; i += 20) {
        restaurantModelObservable = restaurantFinderAPI.getRestaraunts(city, entitytype, searchString, i, 20);

        restaurantModelObservable.subscribeOn(restaurantScheduler);
        restaurantModelObservable.observeOn(AndroidSchedulers.mainThread());
        restaurantModelObservable.subscribe(new Observer<RestaurantModel>() {
            @Override
            public void onSubscribe(Disposable d) {
                COUNT++;
                restaurantDisposable = d;
            }

            @Override
            public void onNext(RestaurantModel value) {
                restaurantList.addAll(value.getRestaurants());
            }

            @Override
            public void onError(Throwable e) {
                restaurantDisposable.dispose();
                onRestaurantSync.onRestaurantSyncFail();
            }

            @Override
            public void onComplete() {
                if (COUNT == 5) {
                    new ModifyTask().execute(restaurantList);
                    COUNT = 0;
                }
            }
        });
restaurantList=newarraylist();
restaurantFinderAPI=RefughtClient.getRefughtClientAPI();
restaurantScheduler=Schedulers.newThread();
for(int i=0;i)是一种用于线程调度任务以供将来在后台线程中执行的工具。任务可以调度为一次性执行,也可以调度为定期重复执行。
预定固定日期
将指定的任务安排为重复的固定速率执行,从指定的延迟后开始。后续执行以大约固定的间隔进行,间隔为指定的时间段。
线程为将来在后台线程中执行而安排任务的一种工具。任务可以安排为一次性执行,也可以安排为定期重复执行。
预定固定日期
将指定的任务安排为重复的固定速率执行,从指定的延迟后开始。后续执行以大约固定的间隔进行,间隔为指定的时间段。

我是在RX的concat操作符的帮助下完成这项工作的。我只是从{20,40,60,80}这样的偏移量数组中创建了一个可观测值,并对rest Api进行了每次发射调用,对于每个结果,我都将其添加到一个arraylist中。

我是在RX的concat操作符的帮助下完成这项工作的。我只是从类似的偏移量数组中创建了一个可观测值{20,40,60,80}并对rest Api的每个发射进行调用,对于每个结果,我将其添加到arraylist中。

可能是这样的:

Disposable disposable = Observable.range(0, 5)
            .subscribeOn(Schedulers.io())
            .flatMap(i -> getRestaraunts(city, entitytype, searchString, i * 20, 20))
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe();
也许是这样的:

Disposable disposable = Observable.range(0, 5)
            .subscribeOn(Schedulers.io())
            .flatMap(i -> getRestaraunts(city, entitytype, searchString, i * 20, 20))
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe();

我想你把我的问题搞错了。我想一个接一个地调用这个api 5次。每次调用给我20个结果,我想累积100个结果。你的建议是在特定的时间间隔调用api,我不知道每个api返回一个调用需要多少时间。我想你把我的问题搞错了。我想把这个称为pi 5次,一个接一个。每次调用给我20个结果,我想累积100个结果。你建议的是在特定的时间间隔调用api,我不知道每个api返回一个调用需要多少时间。是的,非常类似于我所做的。是的,非常类似于我所做的。
 Timer timer=  new Timer();

        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {

                //Call Service Multiple times 
                //At EVery 6 seconds

            }
        },0,6000);
Disposable disposable = Observable.range(0, 5)
            .subscribeOn(Schedulers.io())
            .flatMap(i -> getRestaraunts(city, entitytype, searchString, i * 20, 20))
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe();