【发布时间】:2018-05-01 12:02:58
【问题描述】:
基于您不应该将 Android 视图或其他纯 Android 组件传递给 ViewModel,或者在那里有 android 导入的想法,请考虑下一个用例:
在我的Fragment 中,我想启动某种图像处理操作,为此我需要使用我想要显示结果的当前 xml 视图来初始化我的对象。所以我用视图组件在``片段端创建它,然后将该对象传递给ViewModel。
我的问题是:
我正在向
ViewModel传递一个已引用 Android 视图的对象。ViewModel中的逻辑创建了一个Bitmap,并在处理后将该位图返回给观察它的 Fragment,因此我在我的ViewModel中引用了一些 Android 位图库
如果我需要在那里完成工作,如何避免在 ViewModel 中引用 Android 内容?
【问题讨论】:
-
你好,你能制定一个清晰的问题陈述吗?
-
@Stefan 更新
-
好吧,如果您需要在那里完成工作,那么很难不参考 android 的东西。我认为主要问题是:你想在你的 ViewModel 中完成工作还是你想使用你的 ViewModel 来触发动作?
-
部分处理涉及到一些第三方库,这就是为什么我不想把它扔到视图部分
-
虽然我绝对不是安卓专家,但我通常做的是为您想到的处理创建一个抽象接口,将逻辑包装在一个包含实际转换的具体类中,然后将该对象作为接口传递给 ViewModel。这样,您就可以将所有依赖项限制为单个具体的。
标签: android mvvm android-mvvm