У меня есть приложение для Android, которое делает запросы к API, используя Retrofit.Все работает нормально, но у меня есть одна проблема, если кто-нибудь может уточнить это мне.
В Android я создал OkHttpClient следующим образом:
private static OkHttpClient getClient() {
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
return okHttpClient;
}
И я вызываю клиента какследует:
public static IAPI getAPITest() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://***/api/")
.addConverterFactory(GsonConverterFactory.create())
.client(getClient())
.build();
iApi = retrofit.create(IAPI .class);
return iApi;
}
Итак, из того, что я понял, клиент может ждать ответа от серверной части в течение 1 минуты.
Теперь представьте, что у меня есть форма, которую нужно отправить только один раз (API вставит данные в базу данных, и я не хочу, чтобы данные дублировались), и пользователь нажимает сохранить и API вызывается, и этозанимает больше 1 минуты.
В Android отобразится сообщение, например, «(что-то пошло не так - попробуйте еще раз), в то время как на заднем плане процесс все еще идет, и в конце он вставит данные, верно?
Проблема возникает, когда пользователь нажимает сохранить снова, и по некоторым причинам ответ занял менее 1 минуты.
В заключение, данные были представлены дважды, и я этого не хочу.
Как мы можем избежать такой ситуации? Или этого никогда не произойдет? .. Поправь меня, если я ошибаюсь
Спасибо.