Стоит ли добавлять запрос WebService внутри пользовательского представления?

Итак, у меня есть, скажем, требование, согласно которому всякий раз, когда нажимается конкретная кнопка, я должен вызывать веб-сервис для отправки некоторых журналов.

Эта кнопка присутствует для нескольких экранов, поэтому я подумал, почему бы не поместить ее в CustomView View и не вызвать веб-сервис оттуда?

Затем я просто добавлю это пользовательское представление в макет xml, и мне больше не придется ни о чем беспокоиться. Это хорошая идея?

Если это не так, может ли кто-нибудь предложить лучшее решение? Спасибо.

Пожалуйста, проверьте мое предложение

ismail alaoui 27.05.2019 03:44

Есть ли какая-то конкретная архитектура, которую вы сейчас используете?

Tenten Ponce 27.05.2019 03:46

Часть проекта @TentenPonce использует MVP, но мы пытаемся перейти на MVVM.

Archie G. Quiñones 27.05.2019 04:38
0
3
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я бы посоветовал вам создать класс, скажем, RequestSender что у него есть строковые журналы в качестве параметров в конструкторе.

А затем вы создадите метод send(), который запускает процесс отправки.

И в любое время, когда вы хотите отправить журналы, вы будете действовать, как показано ниже:

RequestSender request = new RequestSender(string logs);
request.send();

Я действительно не понимаю. Можете ли вы объяснить дальше?

Archie G. Quiñones 27.05.2019 04:39

Основная идея состоит в том, чтобы использовать класс, который управляет отправкой журналов через веб-службы (функция отправки), он будет содержать все необходимые методы для отправки вашего запроса, а затем в любое время, когда вам нужно отправить запрос, вы создадите экземпляр этого класса с вашими журналами. как параметры в конструкторе, а затем вызовите метод отправки в вашем классе

ismail alaoui 27.05.2019 04:42
Ответ принят как подходящий

Что касается вашей существующей архитектуры (MVP), лучше поместить логику в Presenter, на самом деле в View не должно быть никакой логики (в вашем случае, пользовательского представления), кроме ввода (например, нажатие кнопки) и обеспечение вывода.

Предполагая, что вы установили прослушиватель кликов на свою кнопку (ну, конечно):

button.setOnClickListener { yourPresenter.doSomeAction() }

и в YourPresenter:

fun doSomeAction() {
   //do necessary action for the button
   //after that, send logs
}

Следуя этому шаблону, вы можете легко выполнять модульные тесты на своем презентере, например проверять, действительно ли вызываются журналы (вы также можете указать точный ввод).

Примечание: Если вы используете чистую архитектуру, я рекомендую поместить ее на уровень домена (Interactor/UseCase), так как Presentation Layer все равно, что и когда регистрировать.

Другие вопросы по теме