Junior
Come possiamo salvare temporaneamente un oggetto in Android?
sobes.tech AI
Risposta dell'AI
È possibile salvare temporaneamente un oggetto in Android in diversi modi, la scelta dipende dalla sua durata e dalla necessità di accedervi dopo che il componente ha terminato:
- Stato della View: Gli oggetti associati alla View possono essere salvati nel suo stato, che viene ripristinato quando la View viene ricreata (ad esempio, durante la rotazione dello schermo). Si usano
onSaveInstanceState()eonRestoreInstanceState(). ViewModel: Il modo migliore per salvare dati legati all'UI che devono sopravvivere ai cambiamenti di configurazione di Activity/Fragment (ad esempio, rotazioni dello schermo).ViewModelesiste fino a che ilViewModelStoreOwnerviene distrutto.// In Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // In ViewModel class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(obsoleto): Metodo in Activity per salvare oggetti arbitrari che sopravvivono ai cambiamenti di configurazione.getLastNonConfigurationInstance()viene usato per ottenere l'oggetto. Obsoleto in favore diViewModel.// In Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Per ottenere l'oggetto val retainedObject = lastCustomNonConfigurationInstance as? MyData- Classe
Application: Per oggetti che devono vivere per tutta la durata dell'applicazione. Si dovrebbe usare con cautela per non conservare troppi dati. - File temporanei: Per oggetti più grandi che non entrano direttamente in memoria o che richiedono salvataggio temporaneo su disco.
| Metodo | Durata della vita | Uso |
|---|---|---|
| Stato della View | Vita della View + ricreazione | Dati piccoli legati alla View |
| ViewModel | Vita di Activity/Fragment | Dati UI che sopravvivono ai cambiamenti di configurazione |
| onRetainCustomNonConfigurationInstance() | Vita di Activity + ricreazione | Oggetti arbitrari (obsoleto) |
Classe Application |
Vita dell'applicazione | Oggetti globali |
| File temporanei | Definiti dallo sviluppatore | Oggetti grandi, archiviazione temporanea |