Sobes.tech
Junior — Middle

როგორ ახორციელებს Android-ი ViewModel-ის მდგომარეობის შენახვის მექანიზმს კონფიგურაციის ცვლილებების ან სიცოცხლის ციკლში?

sobes.tech AI

პასუხი AI-სგან

Android-ში ViewModel განკუთვნილია UI მონაცემების შენახვა და მართვა სიცოცხლის ციკლის გათვალისწინებით. კონფიგურაციის ცვლილებების დროს (მაგალითად, ეკრანის ბრუნვა) სისტემა ანადგურებს Activity ან Fragment-ს, მაგრამ ViewModel ინახება და ახალი ინსტანციებისთვის ხელახლა განაწილდება.

ეს მიღწეულია ViewModelProvider-ის საშუალებით, რომელიც აკავშირებს ViewModel-ს კომპონენტის სიცოცხლის ციკლთან. ViewModel რჩება მეხსიერებაში მანამ, სანამ დაკავშირებულია მფლობელის (Activity/Fragment) სიცოცხლის ციკლთან. როდესაც კომპონენტი განადგურდება კონფიგურაციის ცვლილების გამო, ViewModel არ განადგურება, არამედ გამოიყენება ახალი ინსტანციაში.

შიგნით ViewModel-ის მდგომარეობის შენახვისთვის შეიძლება გამოყენებულ იქნას SavedStateHandle — სპეციალური ობიექტი, რომელიც საშუალებას აძლევს მონაცემების შენახვას და აღდგენას პროცესის განადგურების ან სხვა სიტუაციებში, რომლებიც გადამეტავენ ჩვეულებრივ კონფიგურაციის ცვლილებას.

SavedStateHandle-ის გამოყენების მაგალითი:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
    var counter: Int
        get() = state.get<Int>("counter") ?: 0
        set(value) = state.set("counter", value)
}

ამ გზით, ViewModel ინახავს მონაცემებს მეხსიერებაში კონფიგურაციის ცვლილებების დროს, ხოლო SavedStateHandle-ს ეხმარება მდგომარეობის შენარჩუნებაში უფრო სერიოზული მოვლენების დროს, მაგალითად, პროცესის განადგურებისას.