Sobes.tech
Junior

Ինչպե՞ս կարող ենք ժամանակավոր պահել օբյեկտը Android-ում։

sobes.tech AI

Պատասխան AI-ից

Ժամանակավոր կերպով պահել օբյեկտը Android-ում հնարավոր է մի քանի եղանակներով, ընտրությունը կախված է նրա կյանքի տևողությունից և անհրաժեշտությունից՝ հասանելի լինելուց հետո:

  • View-ի վիճակ: View-ի հետ կապված օբյեկտները կարելի է պահել նրա վիճակում, որը վերականգնվում է View-ի նորից ստեղծման ժամանակ (օրինակ, էկրանի պտույտի ժամանակ): Օգտագործվում է onSaveInstanceState() և onRestoreInstanceState():
  • ViewModel: Լավագույն միջոց է UI-ի հետ կապված տվյալների պահպանման համար, որոնք պետք է մնան փոփոխությունների ժամանակ (օրինակ, էկրանի պտույտ): ViewModel գոյություն ունի մինչև ViewModelStoreOwner-ի ոչնչացումը:
    // Activity/Fragment-ում
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // ViewModel-ում
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (հնացած): մեթոդ Activity-ում՝ ընտրված օբյեկտների պահպանում համար, որոնք կշարունակեն մնալ փոփոխությունների ժամանակ: getLastNonConfigurationInstance() օգտագործվում է օբյեկտը ստանալու համար:
    // Activity-ում
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Օբյեկտի ստացում
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Application դասը: Օբյեկտների համար, որոնք պետք է լինեն ողջ ծրագրի կյանքի ընթացքում: Պետք է զգույշ լինել, որպեսզի շատ տվյալներ չպահվեն այնտեղ:
  • Ժամանակավոր ֆայլեր: Ավելի մեծ օբյեկտների համար, որոնք չեն տեղավորվում անմիջապես հիշողության մեջ կամ պահանջում են պահեստավորում կարճ ժամանակով:
Մեթոդ Կյանքի տևողություն Օգտագործում
View-ի վիճակ View-ի կյանք + վերականգնում Փոքր տվյալներ, կապված View-ի հետ
ViewModel Activity/Fragment-ի կյանք UI տվյալներ, որոնք անցնում են փոփոխությունների ժամանակ
onRetainCustomNonConfigurationInstance() Activity-ի կյանք + վերականգնում Ընտրովի օբյեկտներ (հնացած)
Application դասը Ծրագրի կյանքը Գլոբալ օբյեկտներ
Ժամանակավոր ֆայլեր Դիզայների որոշումով Մեծ օբյեկտներ, ժամանակավոր պահեստարան