Android MVP - 如何在后台服务中创建模型/存储库实例以访问模型方法?

时间:2017-05-19 07:02:12

标签: android android-fragments mvp

我在My Android应用程序中使用MVP模式。我的要求是

1。用户点击“同步”按钮时同步捕获的数据

2。即使应用程序未运行,也会在午夜调用后台服务并与服务器同步数据的作业调度程序。

两种情况的流程均为:

1)当用户点击“同步”按钮

时,同步捕获的数据
  • getPresenter()。notifySyncBtnPressed()将被调用

  • notifySyncBtnPressed()将通过调用mModel.sync()来指示模型

  • 模型同步包含从数据库获取数据的整个实现,将其上传到服务器并将结果通知给Presenter
  • Presenter然后通过调用getView()。notifySyncFinished()
  • 通知View

注意:此流程对我来说很明确 - 如果需要,建议改进

2)将调用后台服务的作业调度程序(请在此处提供说明)

  • BroadcastReceiver将调用扩展IntentService的Service类
  • 创建模型对象(IModel model = new Model())并从onHandleIntent()调用model.sync()。
  • 由于没有UI,因此无需调用演示者。并且无需通知状态。
  • 同步操作完成后,服务将被终止。

请建议,

1。它是从Service类调用Model(Repository)实例的正确方法吗?

2。我也在Model层和Repositiry层之间混淆,MVP中的Model层和Repository层有什么不同。

1 个答案:

答案 0 :(得分:1)

现在我明白为什么你想要服务的主持人,如果是这样的话,我认为你应该专门为服务创建一个Presenter。它非常棒,但它会有意义。

无论如何,这些步骤似乎很好,主持人应该与"模型" (MVP中的M)并且它通常由交互者组成。如果您想使用存储库模式,那么这将发生在交互者之后,并且将成为模型层的一部分。

我会将您的IModel重命名为IInteractor,并且每个需要数据的组件都将与该类进行交互。然后由交互器访问存储库,并且表示层不可见。