Junior
¿Cómo podemos guardar temporalmente un objeto en Android?
sobes.tech AI
Respuesta de la IA
Es posible guardar temporalmente un objeto en Android de varias maneras, la elección depende de su duración y la necesidad de acceder a él después de que el componente haya finalizado:
- Estado de la Vista: Los objetos relacionados con la Vista se pueden guardar en su estado, que se restaura al volver a crear la Vista (por ejemplo, al rotar la pantalla). Se utilizan
onSaveInstanceState()yonRestoreInstanceState(). ViewModel: La mejor forma de guardar datos relacionados con la interfaz de usuario que deben sobrevivir a cambios de configuración de la Actividad/Fragmento (por ejemplo, rotaciones de pantalla).ViewModelexiste hasta que se destruye elViewModelStoreOwner.// En la Actividad/Fragmento val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // En el ViewModel class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(obsoleto): Método en la Actividad para guardar objetos arbitrarios que sobrevivirán a cambios de configuración.getLastNonConfigurationInstance()se usa para obtener el objeto. Obsoleto en favor deViewModel.// En la Actividad override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Para obtener el objeto val retainedObject = lastCustomNonConfigurationInstance as? MyData- Clase
Application: Para objetos que deben vivir durante todo el ciclo de vida de la aplicación. Se debe usar con precaución para no almacenar demasiados datos. - Archivos temporales: Para objetos más grandes que no caben directamente en la memoria o que requieren almacenamiento temporal en disco.
| Método | Duración | Uso |
|---|---|---|
| Estado de la Vista | Vida de la Vista + cambios | Datos pequeños relacionados con la Vista |
| ViewModel | Vida de la Actividad/Fragmento | Datos de la interfaz de usuario que sobreviven a cambios de configuración |
| onRetainCustomNonConfigurationInstance() | Vida de la Actividad + cambios | Objetos arbitrarios (obsoleto) |
Clase Application |
Vida de la aplicación | Objetos globales |
| Archivos temporales | Determinado por el desarrollador | Objetos grandes, almacenamiento temporal |