android - 使用 LiveData 而不是常规回调有什么好处吗?

标签 android android-livedata android-architecture-components android-viewmodel

我有一个允许用户登录的应用程序。用户数据保存在数据库中。 MainActivity 实现了一个接口(interface) OnUserCreationCallback:

class MainActivity implements OnUserCreationCallback {
    //Unrelated code

    @Override
    void setUser(boolean created) {
        if(created) {
            //Display welcome message
        }
    }
}

一旦在数据库中创建了用户,setUser() 方法就会触发,用户会收到一条欢迎消息。这按预期工作。我的问题是,在创建用户时可以观察到实现 ViewModel 和 LiveData 有什么真正的好处吗?我说的只是这个特定的操作,而不是多次更改的操作。这是一次性手术。

最佳答案

如果您在 Activity 被销毁后保留回调,这可能会泄漏您的 Activity。例如,如果您在配置更改期间保留您的用户存储库或其他任何东西,它将继续引用回调,即 Activity ,并且它永远不会真正被销毁。

另一方面,

LiveData 是生命周期感知型的,并且会根据其注册的生命周期所有者取消订阅,例如当 Activity 被销毁时。

另一个人也发表了非常好的观点。这基本上是 MVP 与 MVVM 的争论。

关于android - 使用 LiveData 而不是常规回调有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61736148/

相关文章:

android - 从 json api 获取嵌套值

android - 是否可以将两个 LiveData 做成一个 LiveData?

android - 仅通过当前数据使用 MediatorLiveData 的最佳实践

android - 更改 LiveData 以更新 RecyclerView。正确的方法?

android - 在导航组件中使用带有安全参数的 parcelable

android - 如何防止BottomNavigationView动画卡顿

android - android按钮和监听器。我怎样才能使它更短

Android 架构组件、android 绑定(bind)和 LiveData

android - 边距/填充缩小 ImageView

android - ViewModel 中的 LiveData 如何使用 Transformations 观察 Repository 中的 LiveData?