Junior
Kako možemo privremeno sačuvati objekat u Androidu?
sobes.tech АИ
Одговор од АИ
Времено čuvanje objekta u Android može se izvršiti na više načina, izbor zavisi od njegovog trajanja i potrebe za pristupom nakon završetka komponenta:
- Stanje View: Povezani objekti sa View mogu se čuvati u njegovom stanju, koje se obnavlja pri ponovnom kreiranju View (npr. pri rotaciji ekrana). Koristi se
onSaveInstanceState()ionRestoreInstanceState(). ViewModel: Najbolji način za čuvanje podataka povezanih sa UI, koji treba da prežive promene konfiguracije Activity/Fragment (npr. rotacije ekrana).ViewModelpostoji do uništenja ViewModelStoreOwner-a.// U Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // U ViewModel class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(zastareo): Metod u Activity za čuvanje proizvoljnih objekata koji će preživeti promenu konfiguracije.getLastNonConfigurationInstance()se koristi za dobijanje objekta. Zastareo je u koristViewModel.// U Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Dobijanje objekta val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationklasa: Za objekte koji treba da žive tokom celog životnog ciklusa aplikacije. Treba biti oprezan da ne čuva previše podataka.- Privremeni fajlovi: Za veće objekte koji ne staju direktno u memoriju ili zahtevaju čuvanje na kratko vreme na disku.
| Metod | Trajanje života | Upotreba |
|---|---|---|
| Stanje View | Život View + ponovo stanje | Mali podaci povezani sa View |
| ViewModel | Život Activity/Fragment | Podaci UI, koji preživljavaju promene konfiguracije |
| onRetainCustomNonConfigurationInstance() | Život Activity + ponovo stanje | Proizvoljni objekti (zastareo) |
| Application klasa | Život aplikacije | Globalni objekti |
| Privremeni fajlovi | Određuje programer | Veliki objekti, privremeno skladište |