mvp演示者模式的缺点之一是处理活动状态或方向更改,而视图模型可以保留方向更改,因此我可以将演示者包装在视图模型中并且仍然使用MVP吗?
答案 0 :(得分:1)
当然,您可以让演示者住在ViewModel
中,以抵抗配置更改,并且与Activity
或Fragment
的生存时间相同。
您还可以使演示者本身成为ViewModel
的子类,甚至可以将MVVM
与视图组件一起使用,并从LiveData
观察ViewModel
,以确保生命周期内的安全在那时进行处理(如Google最近推动的那样)。
答案 1 :(得分:1)
实际上,MVP MVVM和MVC都只是设计模式。 它们都无法固有地解决特定平台所带来的问题。 它们旨在为开发人员提供一种机制,以根据职责分离原则将代码的结构组织为逻辑角色(请参见SOLID software engineering)。
与Android活动中的配置更改相关的状态保存问题(旋转只是其中之一)是Android操作系统的功能。
Google为其架构组件内置了一个解决方案,我假设您将其称为ViewModel
,但这并不意味着MVVM作为一种模式可以直接支持它。
如@ zsmb13所述,您可以相当干净地将viewmodel用作演示者。
就状态保存而言,我这里有另一种方法:ucs Framework,还有一篇关于此处一种方法的小文章:A Simple MVP approach for Android-现在不赞成使用简单MVP方法,而建议采用以下方法: ucs框架,除了保留状态外,还管理线程。