Мое приложение каким-то образом передает дублированные данные, я хочу предотвратить это, установив синхронизированный метод 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();
Я нахожу причину, почему он вызывает два раза одновременно в моем приложении, но мне интересно, как применить синхронизированный для этого случая.В настоящее время отправляются два сообщения одновременно.Пожалуйста, порекомендуйте.Спасибо