ViewModelStore ve viewModelStoreOwner nedir?


12

Bu yeni ViewModelProvider api nedeniyle çok kafam karıştı (ViewModelProviders kullanımdan kaldırıldı)

Yeni değişikliklerde olduğu gibi yeni Oluşturucular da var (Kaynak kodu).

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 Bağımlılığı:

implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"

Yani bu yapıcı gerektirir ViewModelStoreve viewModelStoreOwner.

Doktor:

@param store {@code ViewModelStore} 'da ViewModels depolanacak.

@param sahibi {@code ViewModelStore} alıkoymak için kullanılacak {@code ViewModelStoreOwner} sahibi {@code ViewModels}


Herkes bunları ve nasıl kullanılacağını ve geliştiricinin gerçekten ne anlama geldiğini tanımlayabilir mi?


== etkinlik / fragman nedir?

Yanıtlar:


6

Herkes bunları ve nasıl kullanılacağını ve geliştiricinin gerçekten ne anlama geldiğini tanımlayabilir mi?

A ViewModelStore, ViewModels ürününü a HashMap. İs keydize değeri ve değeri kaydedilen ViewModel olduğunda ( + ViewModel sınıfı standart adının ViewModelProviderbir birleşimini kullanır string_key).

A ViewModelStoreOwnersadece bir arayüzdür. getViewModelStore()Bu arabirim tarafından tanımlanmış olan herhangi bir sınıfın sahibi olur ViewModelStore. Bu sınıf daha sonra ViewModelStoregerektiğinde onu uygun şekilde restore etmekten sorumludur ve sorumlu olmalıdır.

Sahibin ve devletin kendi versiyonunu ihtiyaca göre uygulayabiliriz.

== etkinlik / fragman nedir?

Evet. Android kaynak koduna bağlı olarak, hem Fragment(from androidx.fragment.app) hem de ComponentActivity(from androidx.activity) uygular ViewModelStoreOwner. Bu sınıflar a viewModelStoredeğerini korur ve değer uygun şekilde geri yüklenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.