Fragmentos de Android que retienen datos

¿Cuál es la mejor forma de retener datos dentro de un Fragmento a medida que su actividad pasa por un ciclo de creación / destrucción como el de Rotación?

En nuestra configuración, tenemos listas potencialmente grandes cargadas desde nuestros servidores en el adaptador de listas personalizadas de fragmentos y queremos suavizar la UX al no hacer que se vuelvan a cargar en la rotación. El problema que tuvimos con la configuración del fragmento retainInstance = true; es que nuestro adaptador tiene una referencia al contexto de la actividad original y por lo tanto perdería memoria. Podríamos simplemente almacenar los datos en el fragmento y volver a crear el adaptador; amd si es así ¿es realmente una práctica adecuada?

La siguiente idea es almacenar los datos en un objeto singleton de sesión y recuperarlos después de la rotación, lo que presenta algunos problemas con los datos obsoletos, pero podemos superarlos fácilmente.

La otra alternativa que veo, que parece ser la mejor solución, es guardar los datos en un paquete y restaurarlos en el nuevo fragmento después de la rotación; Sin embargo, tenemos bastantes objetos que deberían almacenarse a lo largo de la aplicación y algunos de nuestros objetos son complejos, contienen listas, varios tipos y sería un dolor hacerlos parcelables. ¿Hay una solución mejor o tenemos que morder la bala y hacer que sean parcelables?

Respuestas a la pregunta(3)

Su respuesta a la pregunta