ViewModelStore और viewModelStoreOwner क्या है?


12

मैं इस नए ViewModelProvider एपीआई (ViewModelProviders पदावनत है) के कारण बहुत भ्रमित हूँ

नए परिवर्तनों के साथ नए कंस्ट्रक्टर भी हैं (स्रोत कोड)।

# 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;
    }

ग्रेड की निर्भरता:

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

तो इन कंस्ट्रक्टर की आवश्यकता है ViewModelStoreऔर viewModelStoreOwner

डॉक्टर:

@param store {@code ViewModelStore} जहाँ ViewModels संग्रहीत किया जाएगा।

@param के मालिक {@code ViewModelStoreOwner} जिसका {@link ViewModelStore} {@code ViewModels} को बनाए रखने के लिए उपयोग किया जाएगा


क्या कोई उन्हें परिभाषित कर सकता है और उनका उपयोग कैसे करना है और वे वास्तव में हमारे लिए क्या मतलब है?


क्या ViewModelStoreOwner == गतिविधि / टुकड़ा है?

जवाबों:


6

क्या कोई उन्हें परिभाषित कर सकता है और उनका उपयोग कैसे करना है और वे वास्तव में हमारे लिए क्या मतलब है?

A ViewModelStoreको एक कंटेनर माना जा सकता है जो ViewModels को एक में संग्रहीत करता है HashMap। जहाँ keyस्ट्रिंग मान और मान है, ViewModel सहेजा जा रहा है ( + ViewModel वर्ग विहित नाम ViewModelProviderका एक संयोजन का उपयोग करता है string_key)।

A ViewModelStoreOwnerकेवल एक इंटरफ़ेस है। getViewModelStore()इस इंटरफ़ेस द्वारा परिभाषित किसी भी वर्ग का मालिक बन जाता है ViewModelStore। यह वर्ग तब बनाए रखता है ViewModelStoreऔर जरूरत पड़ने पर इसे बहाल करने के लिए जिम्मेदार होना चाहिए।

हम आवश्यकता के आधार पर मालिक और राज्य के अपने स्वयं के संस्करण को लागू कर सकते हैं।

क्या ViewModelStoreOwner == गतिविधि / टुकड़ा है?

हाँ। Android स्रोत कोड के आधार पर, दोनों Fragment(से androidx.fragment.app) और ComponentActivity(से androidx.activity) लागू होते हैं ViewModelStoreOwner। इन वर्गों को बनाए रखता है viewModelStoreऔर मूल्य उचित रूप से बहाल किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.