Sobes.tech
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() i onRestoreInstanceState().
  • ViewModel: Najbolji način za čuvanje podataka povezanih sa UI, koji treba da prežive promene konfiguracije Activity/Fragment (npr. rotacije ekrana). ViewModel postoji 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 korist ViewModel.
    // U Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Dobijanje objekta
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Application klasa: 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