Junior
Kaip laikinai išsaugoti objektą Android?
sobes.tech AI
Atsakymas iš AI
Laikinai išsaugoti objektą Android galima keliais būdais, pasirinkimas priklauso nuo jo gyvavimo trukmės ir poreikio prieiti prie jo po komponento užbaigimo:
- View būsenos: Susiję su View objektai gali būti saugomi jo būsenoje, kuri atstatoma pakartotinai kuriant View (pavyzdžiui, ekrano pasukimo metu). Naudojama
onSaveInstanceState()ironRestoreInstanceState(). ViewModel: Geriausias būdas išsaugoti su UI susijusius duomenis, kurie turi išlikti keičiant konfigūraciją (pavyzdžiui, ekrano pasukimo metu).ViewModelegzistuoja iki kol yra sunaikinamas ViewModelStoreOwner.// Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // `ViewModel` klasėje class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(pasenęs): metodas Activity, skirtas išsaugoti bet kokius objektus, kurie išliks keičiant konfigūraciją.getLastNonConfigurationInstance()naudojamas gauti objektą. Pasenęs, pakeistasViewModel.// Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Objekto gavimas val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationklasė: skirta objektams, kurie turi būti gyvi viso programos gyvavimo metu. Reikia būti atsargiems, kad joje nesaugoti per daug duomenų.- Laikini failai: didesniems objektams, kurie netelpa tiesiogiai atmintyje arba reikalauja laikino saugojimo diske.
| Metodas | Gyvavimo trukmė | Naudojimas |
|---|---|---|
| View būsenos | Gyvavimo trukmė + pakartotinis atstatymas | Maži duomenys, susiję su View |
| ViewModel | Gyvavimo trukmė Activity/Fragment | UI duomenys, kurie išlieka keičiant konfigūraciją |
| onRetainCustomNonConfigurationInstance() | Gyvavimo trukmė Activity + pakartotinis atstatymas | Bet kokie objektai (pasenę) |
Application klasė |
Gyvavimo trukmė programos | Globalūs objektai |
| Laikini failai | Nustato kūrėjas | Dideli objektai, laikinas saugojimas |