¿Cómo borrar manualmente un ViewModel de Android?

Con referencia aandroid.arch.lifecycle.ViewModel clase

ViewModel tiene un alcance del ciclo de vida del componente de la interfaz de usuario con el que se relaciona, por lo que en unFragmentplicación basada en @, ese será el fragmento del ciclo de vida. Ésto es una cosa buena

En algunos casos uno quiere compartir unViewModel instancia entre múltiples fragmentos. Específicamente estoy interesado en el caso dondemuchas pantallas se relacionan con los mismos datos subyacentes.

(Los documentos sugieren un enfoque similar cuando se muestran varios fragmentos relacionados en la misma pantalla peroesto puede solucionarse utilizando un solo fragmento de host según la respuesta a continuación.)

Esto se discute en el documentación oficial de ViewModel:

ViewModels también se puede usar como una capa de comunicación entre diferentes Fragmentos de una Actividad. Cada Fragmento puede adquirir el ViewModel usando la misma clave a través de su Actividad. Esto permite la comunicación entre los Fragmentos de manera desacoplada de modo que nunca necesiten hablar directamente con el otro Fragmento.

n otras palabras, para compartir información entre fragmentos que representan diferentes pantallas, laViewModel debe tener el alcance deActivity ciclo de vida (y de acuerdo con los documentos de Android, esto también se puede usar en otras instancias compartidas).

Ahora en el nuevo patrón de navegación Jetpack, se recomienda utilizar una arquitectura de "Una actividad / Muchos fragmentos". Esto significa que la actividad dura todo el tiempo que se usa la aplicación.

es decir. cualquier @ compartiViewModel instancias que tienen un alcance deActivity el ciclo de vida nunca se borrará; la memoria permanece en uso constante.

Con el fin de preservar la memoria y usar tan poco como sea necesario en cualquier momento, sería bueno poder borrar @ compartiViewModel instancias cuando ya no es necesario.

Cómo se puede borrar manualmente una ViewModel de suViewModelStore o fragmento de soporte?

Respuestas a la pregunta(4)

Su respuesta a la pregunta