Android, konfiqurasiya dəyişiklikləri və ya həyat dövrü zamanı ViewModel vəziyyətinin saxlanması mexanizmini necə həyata keçirir?
sobes.tech Süni İntellekt
AI-dan cavab
Android-da ViewModel UI məlumatlarını saxlamaq və idarə etmək üçün nəzərdə tutulmuşdur və həyat dövrünü nəzərə alır. Konfiqurasiya dəyişiklikləri (məsələn, ekranın döndürülməsi) zamanı sistem Activity və ya Fragment-i məhv edir, lakin ViewModel saxlanılır və yeni nümunələrə yenidən təyin edilir.
Bu, ViewModelProvider vasitəsilə həyata keçirilir; bu, ViewModel-i komponentin həyat dövrünə bağlayır. ViewModel, sahibi (Activity/Fragment) ilə əlaqəli olduğu müddətdə yaddaşda saxlanılır. Konfiqurasiya dəyişiklikləri səbəbindən komponent məhv olunsa da, ViewModel məhv edilmir, əksinə yeni nümunədə yenidən istifadə olunur.
ViewModel daxilində vəziyyəti saxlamaq üçün SavedStateHandle istifadə edilə bilər; bu, prosesin məhvi və ya digər vəziyyətlərdə məlumatların saxlanması və bərpasını təmin edən xüsusi bir obyektidir.
SavedStateHandle istifadə nümunəsi:
class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
var counter: Int
get() = state.get<Int>("counter") ?: 0
set(value) = state.set("counter", value)
}
Bu şəkildə, ViewModel konfiqurasiya dəyişiklikləri zamanı məlumatları yaddaşda saxlayır və SavedStateHandle daha ciddi hadisələrdə, məsələn, prosesin məhvi zamanı vəziyyəti qorumağa kömək edir.