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? MyDataApplicationդասը: Օբյեկտների համար, որոնք պետք է լինեն ողջ ծրագրի կյանքի ընթացքում: Պետք է զգույշ լինել, որպեսզի շատ տվյալներ չպահվեն այնտեղ:- Ժամանակավոր ֆայլեր: Ավելի մեծ օբյեկտների համար, որոնք չեն տեղավորվում անմիջապես հիշողության մեջ կամ պահանջում են պահեստավորում կարճ ժամանակով:
| Մեթոդ | Կյանքի տևողություն | Օգտագործում |
|---|---|---|
| View-ի վիճակ | View-ի կյանք + վերականգնում | Փոքր տվյալներ, կապված View-ի հետ |
| ViewModel | Activity/Fragment-ի կյանք | UI տվյալներ, որոնք անցնում են փոփոխությունների ժամանակ |
| onRetainCustomNonConfigurationInstance() | Activity-ի կյանք + վերականգնում | Ընտրովի օբյեկտներ (հնացած) |
| Application դասը | Ծրագրի կյանքը | Գլոբալ օբյեկտներ |
| Ժամանակավոր ֆայլեր | Դիզայների որոշումով | Մեծ օբյեկտներ, ժամանակավոր պահեստարան |