Android MVP - 如何在后台服务中创建 Model/Repository 实例以访问模型方法?
Android MVP - How to create Model/Repository instance in background service to access model method?
我在我的 Android 应用程序中使用 MVP 模式。我的要求是
1.当用户单击 'Sync' 按钮时同步捕获的数据
2。作业调度程序将在午夜调用后台服务并与服务器同步数据,即使应用程序不是 运行.
两种场景的流程是:
1)当用户单击 'Sync' 按钮时同步捕获的数据
getPresenter().notifySyncBtnPressed() 将被调用
notifySyncBtnPressed() 将通过调用 mModel.sync()
来指示模型
- Sync from Model 完整实现了从 DB 中获取数据,上传到服务器并将结果通知给 Presenter
- Presenter 然后通过调用 getView().notifySyncFinished() 通知 View
注意:这个流程对我来说很清楚 - 如果需要建议改进
2) 将调用后台服务的作业调度程序(请在此处提供您的说明)
- BroadcastReceiver 将调用扩展 IntentService
的服务 class
- 创建模型对象 (IModel model = new Model()) 并从 onHandleIntent() 调用 model.sync()。
- 因为没有UI,所以不需要调用presenter。而且不需要通知状态。
- 同步操作完成后服务将被终止。
求推荐,
1.从服务调用模型(存储库)实例的正确方法 class?
2。我也混淆了Model层和Repositiry层,MVP中Model层和Repository层有什么区别吗?
现在我明白你为什么要从服务中获取演示者了,如果是这样的话,我认为你应该专门为服务创建一个演示者。这很硬核,但它是有道理的。
无论如何步骤看起来都很好,演示者应该与 "Model"(MVP 中的 M)交互,它通常由交互者组成。如果您想使用存储库模式,那将发生在交互器之后,并且将成为模型层的一部分。
我会将您的 IModel 重命名为 IInteractor,每个需要数据的组件都将与该组件交互 class。然后交互器访问存储库,并且对表示层不可见。
我在我的 Android 应用程序中使用 MVP 模式。我的要求是
1.当用户单击 'Sync' 按钮时同步捕获的数据
2。作业调度程序将在午夜调用后台服务并与服务器同步数据,即使应用程序不是 运行.
两种场景的流程是:
1)当用户单击 'Sync' 按钮时同步捕获的数据
getPresenter().notifySyncBtnPressed() 将被调用
notifySyncBtnPressed() 将通过调用 mModel.sync()
来指示模型
- Sync from Model 完整实现了从 DB 中获取数据,上传到服务器并将结果通知给 Presenter
- Presenter 然后通过调用 getView().notifySyncFinished() 通知 View
注意:这个流程对我来说很清楚 - 如果需要建议改进
2) 将调用后台服务的作业调度程序(请在此处提供您的说明)
- BroadcastReceiver 将调用扩展 IntentService 的服务 class
- 创建模型对象 (IModel model = new Model()) 并从 onHandleIntent() 调用 model.sync()。
- 因为没有UI,所以不需要调用presenter。而且不需要通知状态。
- 同步操作完成后服务将被终止。
求推荐,
1.从服务调用模型(存储库)实例的正确方法 class?
2。我也混淆了Model层和Repositiry层,MVP中Model层和Repository层有什么区别吗?
现在我明白你为什么要从服务中获取演示者了,如果是这样的话,我认为你应该专门为服务创建一个演示者。这很硬核,但它是有道理的。
无论如何步骤看起来都很好,演示者应该与 "Model"(MVP 中的 M)交互,它通常由交互者组成。如果您想使用存储库模式,那将发生在交互器之后,并且将成为模型层的一部分。
我会将您的 IModel 重命名为 IInteractor,每个需要数据的组件都将与该组件交互 class。然后交互器访问存储库,并且对表示层不可见。