即使关闭了Android应用程序,也会连续进行API调用-RxJava

时间:2019-03-27 12:37:39

标签: android retrofit rx-java rx-android

我已经开发了一个android应用程序,需要使用rest API调用获取列表并在我的应用程序上显示。该列表会经常更新。我已经使用RxAndroid编写了以下代码并进行了改型以进行api调用:

private void fetchAllData() {
        disposable.add(Observable.interval(0,60,TimeUnit.SECONDS).
                subscribeOn(Schedulers.io()).
                flatMap(i -> apiService.getData(fetchActiveData)).
                observeOn(AndroidSchedulers.mainThread()).
                subscribeWith(new DisposableObserver<DataResponse>() {
                   @Override
                   public void onNext(DataResponse dataResponse) {
                       Log.i(TAG, "The rest api was called again");
                       List<Data> dataList = dataResponse.getData();
                       displayData(dataList,false);
                   }
                    @Override
                    public void onError(Throwable e) {
                        Log.e(TAG, "The exception is thrown :: " + e.getMessage());
                        displayData(null,true);
                        fetchAllData();
                    }
                    @Override
                    public void onComplete() {

                    }
                })
        );
    }

使用上述代码,我能够每60秒进行一次api调用并更新我的列表。如果有任何新项目未在应用程序上显示,那么我有逻辑显示通知。

要增强我的应用程序,我需要在应用程序关闭且未在后台运行时进行api调用。有人可以建议我如何使用RxJava实现这一目标。

0 个答案:

没有答案