Является ли хорошей идеей добавить запрос WebService в пользовательском представлении? - PullRequest
0 голосов
/ 27 мая 2019

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

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

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

button.setOnClickListener { yourPresenter.doSomeAction() }

и в YourPresenter:

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

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

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

0 голосов
/ 27 мая 2019

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

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

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

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