将参数库传递给ViewModel而不是继承自AndroidViewModel是个好主意吗?

HelloCW

代码A来自https://github.com/android/architecture-components-samples/tree/master/PagingWithNetworkSample

代码B来自https://github.com/android/architecture-components-samples/tree/master/PagingSample

我知道我应该使用AndroidViewModel而不是ViewModel在需要使用Context实例来基于数据库的Room(例如代码B)时使用。

我发现SubRedditViewModel代码A中的类未继承自AndroidViewModel,它repository使用构造函数传递了参数

将参数传递repositoryViewModel而不是继承自是一个好主意AndroidViewModel吗?

代码A

class SubRedditViewModel(
        private val repository: RedditPostRepository,
        private val savedStateHandle: SavedStateHandle
) : ViewModel() {
   ...
}

代码B

class CheeseViewModel(app: Application) : AndroidViewModel(app) {
    val dao = CheeseDb.get(app).cheeseDao()
    ...
}
爱德华·B。

继承的那一刻AndroidViewModel,由于您依赖于Android框架,因此您的类变得不可单元测试。另外,在代码段B中,您失去了为自己的测试插入两倍的能力dao,从而使测试更加困难。

总之,请尝试避免使用框架类并练习依赖项注入(手动或借助Dagger这样的DI框架都没关系)。因此,您最好使用代码段A。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将未初始化的变量传递给srand是个好主意吗?

来自分类Dev

将实例传递给__init__。这是一个好主意吗?

来自分类Dev

将未初始化的变量传递给srand是个好主意吗?

来自分类Dev

通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

来自分类Dev

继续创建新的数据库实体不是一个好主意吗?

来自分类Dev

将静态库链接到共享库(例如 openmp)是个好主意吗

来自分类Dev

通过依赖注入将数据上下文对象传递给控制器是一个好主意吗?

来自分类Dev

绑定PasswordBox密码不是一个好主意吗?

来自分类Dev

处理参数对象是个好主意吗?

来自分类Dev

操纵参数对象是个好主意吗?

来自分类Dev

编写依赖Groovy的库是个好主意吗?

来自分类Dev

编写依赖Groovy的库是个好主意吗?

来自分类Dev

在熊猫数据框上应用ML库是个好主意吗?

来自分类Dev

将硬盘置于版本控制下是个好主意吗

来自分类Dev

使用数据库主键构造http ETag标头不是一个好主意吗?

来自分类常见问题

将您的favicon.ico文件放在非根目录下不是一个好主意吗?

来自分类Dev

动态SQL表是个好主意吗?

来自分类Dev

并行读写文件是个好主意吗?

来自分类Dev

在Ubuntu上这是个好主意吗?

来自分类Dev

“包装”异常是个好主意吗?

来自分类Dev

动态SQL表是个好主意吗?

来自分类Dev

使用 ENV 变量是个好主意吗?

来自分类Dev

部分 uuid 是个好主意吗?

来自分类Dev

为文本标签创建CSS类不是一个好主意吗?

来自分类Dev

Javascript-在闭包内使用函数构造函数不是一个好主意吗?

来自分类Dev

git rebase-压缩初始提交通常不是一个好主意吗?

来自分类Dev

在HttpContext.Current上发送覆盖响应不是一个好主意吗?

来自分类Dev

使用hgignore忽略* .orig文件不是一个好主意吗?

来自分类Dev

在单元测试中使用依赖注入对象不是一个好主意吗?

Related 相关文章

  1. 1

    将未初始化的变量传递给srand是个好主意吗?

  2. 2

    将实例传递给__init__。这是一个好主意吗?

  3. 3

    将未初始化的变量传递给srand是个好主意吗?

  4. 4

    通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

  5. 5

    继续创建新的数据库实体不是一个好主意吗?

  6. 6

    将静态库链接到共享库(例如 openmp)是个好主意吗

  7. 7

    通过依赖注入将数据上下文对象传递给控制器是一个好主意吗?

  8. 8

    绑定PasswordBox密码不是一个好主意吗?

  9. 9

    处理参数对象是个好主意吗?

  10. 10

    操纵参数对象是个好主意吗?

  11. 11

    编写依赖Groovy的库是个好主意吗?

  12. 12

    编写依赖Groovy的库是个好主意吗?

  13. 13

    在熊猫数据框上应用ML库是个好主意吗?

  14. 14

    将硬盘置于版本控制下是个好主意吗

  15. 15

    使用数据库主键构造http ETag标头不是一个好主意吗?

  16. 16

    将您的favicon.ico文件放在非根目录下不是一个好主意吗?

  17. 17

    动态SQL表是个好主意吗?

  18. 18

    并行读写文件是个好主意吗?

  19. 19

    在Ubuntu上这是个好主意吗?

  20. 20

    “包装”异常是个好主意吗?

  21. 21

    动态SQL表是个好主意吗?

  22. 22

    使用 ENV 变量是个好主意吗?

  23. 23

    部分 uuid 是个好主意吗?

  24. 24

    为文本标签创建CSS类不是一个好主意吗?

  25. 25

    Javascript-在闭包内使用函数构造函数不是一个好主意吗?

  26. 26

    git rebase-压缩初始提交通常不是一个好主意吗?

  27. 27

    在HttpContext.Current上发送覆盖响应不是一个好主意吗?

  28. 28

    使用hgignore忽略* .orig文件不是一个好主意吗?

  29. 29

    在单元测试中使用依赖注入对象不是一个好主意吗?

热门标签

归档