ฉันสับสนมากเนื่องจาก ViewModelProvider api ใหม่นี้ (ViewModelProviders เลิกใช้แล้ว)
เช่นเดียวกับการเปลี่ยนแปลงใหม่มี Constructors ใหม่ด้วย (ซอร์สโค้ด)
# 1
public ViewModelProvider(@NonNull ViewModelStoreOwner owner) {
this(owner.getViewModelStore(), owner instanceof HasDefaultViewModelProviderFactory
? ((HasDefaultViewModelProviderFactory) owner).getDefaultViewModelProviderFactory()
: NewInstanceFactory.getInstance());
}
# 2
public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) {
this(owner.getViewModelStore(), factory);
}
# 3
public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory factory) {
mFactory = factory;
mViewModelStore = store;
}
การพึ่งพา Gradle:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
ดังนั้นเหล่านี้สร้างต้อง และViewModelStore
viewModelStoreOwner
หมอ:
@param store {@code ViewModelStore} โดยที่ ViewModels จะถูกเก็บไว้
@param เจ้าของ {@code ViewModelStoreOwner} ซึ่ง {@link ViewModelStore} จะถูกใช้เพื่อเก็บ {@code ViewModels}
ทุกคนสามารถกำหนดพวกเขาและวิธีการใช้พวกเขาและสิ่งที่พวกเขามีความหมายกับเรานักพัฒนา?
ViewModelStoreOwner == กิจกรรม / ส่วนคืออะไร