【发布时间】:2016-10-02 18:45:04
【问题描述】:
我目前正在构建一个 android 应用程序,并希望将其基于以下作者所建议的“干净架构”:
- Fernando Cejas - Architecting Android…The clean way?
- Dario Miličić - A detailed guide on developing Android apps using the Clean Architecture pattern
- Romain Piel - Ingedients for a healthy Android Architecture
- Uncle Bob - The Clean Architecture
- Hannes Dorfmann - Mosby Library
- Pedro Vicente Gómez Sánchez - Effective Android UI
- David Guerrero - intro to a cleaner android architecture: the mvp pattern
- Patryk Poborca - Clean Architecture & Testing
当前架构:
视图(片段) Presenter Interactor Repository
- Fragment 实现 View 并创建 Presenter。
- Presenter 通过 View 接口引用 Fragment。
- Presenter 实现了一个 Interactor.Callback 接口,用于要呈现的数据
- Presenter 创建并启动一个 Interactor。
- 交互器在后台线程中从存储库获取和更新数据以执行业务逻辑。
- 交互器为来自存储库的数据库/服务器数据实现 Repository.Callback。
- 交互器在存储库中注册以更新它所需的数据。
在当前设计中,每个显示有 1 个交互器(一个显示可能包含多个片段,例如具有 30 个相同类型片段的 ViewPager),每个片段有 1 个演示者。 Presenter 和 Interactor 没有框架依赖关系,可以轻松进行测试。
我主要关心的是交互器/用例的实现以及它们与演示者 (MVP) 或视图模型 (MVVM) 的关系。
问题:
计划让交互器首先获取所有必需的业务对象 (BO) 以进行显示。 获取是从数据层同步完成的,每个接收到的 BO 都定向到 Presenter。 这会导致延迟,直到所有数据都显示在视图中。
它还为它感兴趣的 BO 注册更新(与之前获取的相同)以通过 Presenter 持续更新视图。
因此,我正在寻找有关如何在我的案例中设置交互器的指南。 上面提到的实现有一个任务,工作完成然后完成,Interactor后台线程可能会关闭。
在我的例子中,Interactor 注册来自数据层的更新并等待处理它们,然后将数据发布到 Presenter UI 线程,因此只要有 Presenter 监听,它就会一直存在。
这个功能是不同的,我正在寻找一种好的做法来使它与“干净的架构”一起工作。
【问题讨论】:
-
那么你的问题到底是什么?
-
我编辑了问题部分以澄清这一点。
标签: android mvvm architecture mvp android-databinding