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

标签 android android-fragments mvp

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

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

<强>2。 Job-scheduler 将在午夜调用后台服务并与服务器同步数据,即使应用程序未运行也是如此。

这两种情况的流程是:

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

  • getPresenter().notifySyncBtnPressed() 将被调用

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

  • Sync from Model 完整实现了从数据库中获取数据,上传到服务器并将结果通知Presenter
  • Presenter 然后通过调用 getView().notifySyncFinished() 通知 View

注意:这个流程对我来说很清楚 - 如果需要建议改进

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

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

请建议,

<强>1。这是从服务类调用模型(存储库)实例的正确方法吗?

<强>2。我也混淆了Model层和Repositiry层,MVP中的Model层和Repository层有什么区别吗?

最佳答案

现在我明白了为什么要从 Service 中获取 Presenter,如果是这样,我认为您应该专门为 Service 创建一个 Presenter。它非常硬核,但它是有道理的。

无论如何,这些步骤看起来都很好,演示者应该与“模型”(MVP 中的 M)交互,它通常由交互者组成。如果您想使用存储库模式,那将发生在交互器之后,并且将成为模型层的一部分。

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

关于Android MVP - 如何在后台服务中创建模型/存储库实例以访问模型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063494/

相关文章:

c# - 将 Android View 作为自定义控件集成到 Xamarin.Forms 中

android - 查看带有大量图像的分页,它甚至可以工作吗?

Java提示

android - Android 中的 MVP - 在哪里放置 Google API 调用以获取位置服务?

android - 为什么我无法在 Motorola Atrix 仿真器中看到正确的自定义对话框?

android - 使 loadingDialog 在 twitter4J 页面完成时消失

android - 如何在使用导航时关闭 Android 中的当前 fragment ?

android - Mvvmcross:框架布局在 Activity 后不显示 fragment

asp.net-mvc - MVC 优于 MVP 的优势

java - 解析 XML,调用 doc.getDocumentElement().getNodeName() 并得到 "h1"的错误输出?