Допустим MVP. В презентере определен интерфейс для колбека
dataManager.downloadDataFromNetwork(currentDate, ACCESS_KEY, currentCurrency, new Callback<PostModel>() {
@Override
public void onResponse(Call<PostModel> call, Response<PostModel> response) {
PostModel postModel = response.body();
validationOfData(postModel);
}
@Override
public void onFailure(Call<PostModel> call, Throwable t) {
getView().showToast("Сетевая ошибка");
}
});
Вью передает данные в презентер, в презентере реализуется интерфейс и далее фреймворк retrofit 2
осуществляет вызов в сеть. До этого момента всё выполнял главный поток приложения. Тут главный поток "освобождается" и продолжает слушать действия пользователя.
Дальше осуществляется запрос в сеть в доп. потоке. Результат передается в реализацию интерфейса колбека, который лежит в презентер. Я так понимаю всё это делает доп. поток. И он же вызывает методы интерфейса вью и обновляет вью.. Правильно ли я всё понимаю?
Дело в том , что ретрофит исполняет колбек в UI
потоке. Всё реализовано в ретрофит под "капотом". UI
нельзя трогать из доп. потоков. runOnUiThread
предназначен для передачи исполнения главному потоку.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мы сохраняем данные в клевой БД RethinkDBПроблема возникла с извлечением числовых значений типа Double
При попытке вытащить данные вылетает ошибка (местами обрезал ибо ограничение):