在MVVM中,ViewModel绝不能引用视图。但是如何实现它的使用相机2 API呢?对于相机设置,需要TextureView参数(例如,TextureView.surfaceTexture__、TextureView.isAvailable__、TextureView.width)。
我正在尝试将逻辑从Camera2Basic实例转换到ViewModel。通过自定义cameraInit(...)函数传递所需的值是干净的解决方案,还是将代码保存在片段中更好?
发布于 2018-08-06 13:25:34
通常,作为MVVM的一部分,ViewModel是视图(片段)和模型之间的组件(在您的示例中,某些文件管理器用于将图像保存到文件中)。正如您已经提到的,ViewModel的最佳实践是不了解任何视图。考虑到这一点,ViewModel应该接受视图中的一些数据(例如位图),并将其传递给模型。您可以通过处理片段中的所有视图相关代码(或者某个处理相机的助手类,如果您希望保持片段尽可能干净)并将其传递给ViewModel来实现这一点。
这样做的主要目的是可以使用简单的单元测试来测试您的ViewModels,而不需要进行测试。始终需要知道,使用MVVM或MVP这样的体系结构不会降低代码的复杂性,一般来说,由于具有相同的逻辑加上体系结构的开销,复杂性甚至会增加。由于这个事实,您必须始终考虑是否值得应用MVVM (如果您不想测试代码,而且类也不太大,这不会有太大帮助)。
https://stackoverflow.com/questions/51708531
复制相似问题