- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于这个新的 ViewModelProvider api(ViewModelProviders 已弃用),我感到非常困惑
与新的更改一样,也有新的构造函数(源代码)。
public ViewModelProvider(@NonNull ViewModelStoreOwner owner) {
this(owner.getViewModelStore(), owner instanceof HasDefaultViewModelProviderFactory
? ((HasDefaultViewModelProviderFactory) owner).getDefaultViewModelProviderFactory()
: NewInstanceFactory.getInstance());
}
public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) {
this(owner.getViewModelStore(), factory);
}
public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory factory) {
mFactory = factory;
mViewModelStore = store;
}
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
所以这些构造函数需要 ViewModelStore
和 viewModelStoreOwner
。
<小时/>@param store {@code ViewModelStore} where ViewModels will be stored.
@param owner a {@code ViewModelStoreOwner} whose {@link ViewModelStore} will be used to retain {@code ViewModels}
任何人都可以定义它们以及如何使用它们以及它们对我们开发人员的真正意义吗?
<小时/>ViewModelStoreOwner==activity/fragment 吗?
最佳答案
Can anyone define them and how to use them and what they really mean to us developer's?
ViewModelStore
可以被视为将 ViewModel 存储在 HashMap
中的容器。其中 key
是字符串值,value 是要保存的 ViewModel(ViewModelProvider
使用 string_key
+ ViewModel 类规范名称的串联)。
ViewModelStoreOwner
只是一个接口(interface)。任何实现此接口(interface)定义的 getViewModelStore()
的类都会成为 ViewModelStore
的所有者。然后,此类维护 ViewModelStore
并负责在需要时适本地恢复它。
我们可以根据需求实现我们自己的所有者和状态版本。
is ViewModelStoreOwner==activity/fragment?
是的。基于 Android 源代码,Fragment
(来自 androidx.fragment.app
)和 ComponentActivity
(来自 androidx.activity
code>) 实现 ViewModelStoreOwner
。这些类维护一个 viewModelStore
并适本地恢复值。
关于android - 什么是 ViewModelStore 和 viewModelStoreOwner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892411/
是否可以为 ViewModelProviders 提供一次自己的 ViewModelStore 实现来代替默认实现? 更准确地说,我有兴趣向 ViewModelStore 添加 fun clear(v
由于这个新的 ViewModelProvider api(ViewModelProviders 已弃用),我感到非常困惑 与新的更改一样,也有新的构造函数(源代码)。 #1 public ViewMo
在 google 示例中指出,要在 fragment 之间进行通信,您可以使用作用域为 Activity 的 ViewModel。这种方法的问题在于,ViewModel 将持续到 Activity 被
我正在尝试创建一个叠加层并将 View 附加到 WindowManager,我已经通过创建一个实现 Lifecycle/ViewModelStore/SavedStateRegistry Owner
我是一名优秀的程序员,十分优秀!