如何使用Retrofit 2在Android中将应用程序逻辑与网络层分开

Ton*_*ony 8 rest android retrofit retrofit2

我是Android和Retrofit的新手,我遇到了一个问题.

我想让我的让我们说"ServerCommunication"类(singelton),其中所有的Retrofit魔法都已完成,并且它将具有完成REST调用的公共方法.

我想在我的活动中使用这个"ServerCommunication"实例来调用Rest服务,但就是这样.应用程序逻辑应该在活动中完成.所以这样一些活动Login调用方法Login(POJORequest)在"ServerCommunication"中,通过Retrofit框架完成实际的REST调用并返回一些POJOResponse.所以Activity不关心REST通信,而ServerCommunication不关心什么逻辑应该应用于REST服务的响应.

通过改造2,我不明白如何阻止Activity等待改造的响应以及如何返回.好吧,我可能认为我可以在活动中使用一些回调方法,因此可以从OnPostExecute()中的ServerCommunication调用这些方法,以根据响应中的数据应用一些逻辑.我认为这应该是更简单的方法.

好吧,为了澄清上面的所有混乱,想象一下简单的情况:你在主要活动中有数据,你将这些数据传递给完成REST调用并收到响应的通信类.必须验证此响应才能继续.并且您希望此验证在主要活动中完成,而不是在通信类中完成.

使用Retrofit2在Android中执行此操作的模式是什么?

先感谢您

Een*_*ble 6

我通常做的事情:

  • 创建您的界面(您拥有所有REST方法 - GET和POST等)
  • 创建一个使用相应方法执行实际调用的类(请参阅接口REST方法).我会称之为ServiceAPIImplementor.这是您实际创建Retrofit适配器的地方.
  • 在您的活动中,创建实现者类的实例并调用方法并传递预期的参数.
  • 在调用方法之后,您应该显示一个进度对话框,让用户知道某些事情正在发生.
  • onResponseonFailure处方法被调用,使用事件模式(EventBus库?)以通知网络操作已经完成的活动.一旦活动收到通知,它就应该关闭进度对话框并相应地更新UI - 使用新接收的数据或完成的操作(预期结果).

我希望这可以帮助您更接近您想要实现的目标!