【问题标题】:Which classes should have access to a ViewModel哪些类应该有权访问 ViewModel
【发布时间】:2020-05-31 16:23:43
【问题描述】:

我想知道处理 ViewModel 和引用数据库中特定数据的多个活动的良好/最佳实践是什么。

假设我有一个 FriendViewModel 提供对我的朋友数据库的访问(当然通过一个存储库和一个 Dao)和一个显示所有 FriendEntities 的 RecyclerView。

如果我现在想在不同的 Activity 中编辑朋友:将一个或多个 FriendEntities(实现 Serializable)传递给意图会更好(或更有效),还是应该传递friendId + FriendViewModel 并检索使用传递的 FriendViewModel 和friendId 来自friend_database 的FriendEntity?

这似乎是一种常见情况:是否有适合这种情况的最佳做法?

【问题讨论】:

    标签: android database android-intent android-activity android-room


    【解决方案1】:

    我们通常为不同的活动/片段使用单独的 ViewModel,除非我们有想要处理的公共数据,这就是 SharedViewModel 发挥作用的地方。在您的情况下,我认为根本不需要使用 ShareViewModel。

    第一个活动:

    ListActivity -> ListViewModel -> FriendRepository -> FriendDao

    第二个活动

    EditActivity -> EditViewModel -> FriendRepository -> FriendDao

    因此,这里共享的唯一内容是您的 RepositoryFriendDao,它们围绕着 Friend 模型。

    朋友 id 从 ListActivity 传递给 EditActivity,让 FriendRepository 使用 DAO 检索该朋友。

    这是我个人使用的方法,大多数示例都会使用。

    【讨论】:

    • 这种方法在使用 getSupportActionBar().setHomeAsUpIndicator() 来回导航我的活动时特别有用,因为父活动依赖于传递给它的实体。每次需要时都可以轻松地从数据库中检索各种额外内容,从而节省大量时间。
    猜你喜欢
    • 2010-09-13
    • 2019-08-23
    • 1970-01-01
    • 2012-03-19
    • 2018-11-20
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多