在自定义视图中添加WebService请求是一个好主意吗?

时间:2019-05-27 01:34:54

标签: android android-custom-view

所以我可以说我有一个要求:每当按下特定按钮时,我应该调用一个Web服务来发送一些日志。

此按钮可用于多个屏幕,所以我为什么不将其放在CustomView View中并从那里调用Web服务呢?

然后,我将仅将此自定义视图添加到xml布局中,而不必担心任何事情了。这是个好主意吗?

如果不是,那么有人可以提出更好的解决方案吗?谢谢。

2 个答案:

答案 0 :(得分:0)

我建议您创建一个类,假设RequestSender的a将字符串记录为构造函数中的params。

然后您将创建一个方法send()来触发发送过程。

只要您想发送日志,就可以按照以下步骤进行操作:

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

答案 1 :(得分:0)

对于您现有的架构(MVP),最好将逻辑放在Presenter中,实际上View上不应有任何逻辑(在您的情况下为自定义视图)从输入(例如单击按钮)并提供输出。

假设您在按钮上设置了一个点击监听器(当然是这样):

button.setOnClickListener { yourPresenter.doSomeAction() }

并在YourPresenter中:

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

按照这些模式,您可以轻松地对演示者进行单元测试,例如测试是否实际调用了日志(也可以指定确切的输入)。

注意:如果您使用的是Clean Architecture,我建议将其放在域层(Interactor/UseCase)上,因为Presentation Layer不在乎记录什么以及何时记录。