Какой поток передает данные во View

131
18 мая 2019, 00:10

Допустим 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 осуществляет вызов в сеть. До этого момента всё выполнял главный поток приложения. Тут главный поток "освобождается" и продолжает слушать действия пользователя.
Дальше осуществляется запрос в сеть в доп. потоке. Результат передается в реализацию интерфейса колбека, который лежит в презентер. Я так понимаю всё это делает доп. поток. И он же вызывает методы интерфейса вью и обновляет вью.. Правильно ли я всё понимаю?

Answer 1

Дело в том , что ретрофит исполняет колбек в UI потоке. Всё реализовано в ретрофит под "капотом". UI нельзя трогать из доп. потоков. runOnUiThread предназначен для передачи исполнения главному потоку.

READ ALSO
Java, Swing, полноэкранный режим

Java, Swing, полноэкранный режим

Вопрос наверное больше к знатокам Linux =)

137
RethinkDB Java-дравер возвращает double как Long

RethinkDB Java-дравер возвращает double как Long

Мы сохраняем данные в клевой БД RethinkDBПроблема возникла с извлечением числовых значений типа Double

149
SQLSyntaxErrorException: ORA-02201: sequence not allowed here

SQLSyntaxErrorException: ORA-02201: sequence not allowed here

При попытке вытащить данные вылетает ошибка (местами обрезал ибо ограничение):

175