Junior
Kā mēs varam pagaidu saglabāt objektu Android?
sobes.tech AI
Atbilde no AI
Laika objekta Android var būt paglabāt vairākos veidos, izvēle ir atkarīga no tā dzīves ilguma un nepieciešamības piekļūt tam pēc komponenta pabeigšanas:
- View stāvoklis: Ar View saistītus objektus var saglabāt tā stāvoklī, kas tiek atjaunots, atkārtoti izveidojot View (piemēram, ekrāna apgriešanas laikā). Izmanto
onSaveInstanceState()unonRestoreInstanceState(). ViewModel: Labākais veids, kā saglabāt ar UI saistītus datus, kas jāizdzīvo konfigurācijas izmaiņas (piemēram, ekrāna apgriešanu).ViewModelpastāv līdz brīdim, kad tiek iznīcināts ViewModelStoreOwner.// Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // `ViewModel` klasē class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(novecojis): metode Activity, lai saglabātu nejaušus objektus, kas izdzīvos konfigurācijas izmaiņas.getLastNonConfigurationInstance()tiek izmantots, lai iegūtu objektu. Novecojis, aizstāts arViewModel.// Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Objekta iegūšana val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationklase: priekš objektiem, kuriem jādzīvo visa lietojumprogrammas dzīves cikla laikā. Jābūt uzmanīgiem, lai tajā nesaglabātu pārāk daudz datu.- Laika faili: lielākiem objektiem, kas neiederas tieši atmiņā vai prasa īslaicīgu saglabāšanu diskā.
| Metode | Dzīves ilgums | Lietošana |
|---|---|---|
| View stāvoklis | Dzīves ilgums + atkārtots atjaunošana | Mazs datu apjoms, kas saistīts ar View |
| ViewModel | Dzīves ilgums Activity/Fragment | UI dati, kas izdzīvos konfigurācijas izmaiņas |
| onRetainCustomNonConfigurationInstance() | Dzīves ilgums Activity + atkārtots atjaunošana | Nejauši objekti (novecojis) |
Application klase |
Dzīves ilgums lietojumprogrammai | Globāli objekti |
| Laika faili | Izvēlas izstrādātājs | Lieli objekti, pagaidu glabāšana |