როგორ ახორციელებს 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-ს ეხმარება მდგომარეობის შენარჩუნებაში უფრო სერიოზული მოვლენების დროს, მაგალითად, პროცესის განადგურებისას.