Как настроить синхронизацию для сетевого вызова? - PullRequest
0 голосов
/ 09 октября 2018

Мое приложение каким-то образом передает дублированные данные, я хочу предотвратить это, установив синхронизированный метод submit, чтобы второй вызов должен был ждать первого завершения, поэтому отправленные данные удаляются локально.

static synchronized public void submitStatistics(final User user,
                                    final Consumer<String> onSuccess, final Consumer<Enum.ErrorCode> onError) {
    JSONArray statistics = Statistic.getAllItemsAndConvertToJSONString();
    Rx2AndroidNetworking.post(urlBuilder(SUBMIT_STATISTICS))
            .addQueryParameter(getDefaultParams())
            .addJSONArrayBody(statistics)
            .build()
            .getStringObservable()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new ObserverWrapper<String>(errorCode -> {
                onError.accept(errorCode);
            }) {
                @Override
                protected void onSuccess(String s) {
                    Statistic.deleteSubmittedItems();
                    onSuccess.accept(s);
                }
            });
}

Данные на сервере будут дублироваться при вызове

submitStatistics();
submitStatistics();

Я нахожу причину, почему он вызывает два раза одновременно в моем приложении, но мне интересно, как применить синхронизированный для этого случая.В настоящее время отправляются два сообщения одновременно.Пожалуйста, порекомендуйте.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...