Примечание для читателей: этот вопрос относится только к кодовому имени 1.
Я разрабатываю приложение, которому для правильной работы нужны исходные данные с сервера. Первая показанная форма не нуждается в этих данных, и при первом запуске также имеется заставка, поэтому, если подключение к Интернету хорошее, достаточно времени для извлечения данных ... но подключение к Интернету может быть медленным или отсутствовать.
У меня в init
есть вызов этого метода:
private void getStartData() {
Runnable getBootData = () -> {
if (serverAPI.getSomething() && serverAPI.getXXX() && ...) {
isAllDataFetched = true;
} else {
Log.p("Connection ERROR in fetching initial data");
}
};
EasyThread appInfo = EasyThread.start("APPINFO");
appInfo.run(getBootData);
}
Каждый метод serverAPI
в этом примере является синхронным методом, который возвращает true
в случае успеха, false
в противном случае. Мой вопрос заключается в том, как изменить этот EasyThread, чтобы повторять все вызовы (serverAPI.getSomething() && serverAPI.getXXX() && ...)
через одну секунду , если результат равен false
, и снова через еще одну секунду и т. Д., Пока результат не будет true
.
Я не хочу показывать пользователю ошибку или предупреждение: я буду показывать предупреждение, только если статическое логическое значение isAllDataFetched
равно false
, когда запрашиваемые данные строго необходимы.
Я пытался внимательно прочитать документацию EasyThread
и Runnable
, но я не понимал, как обращаться с этим вариантом использования.