/ / Retener datos de Fragment sin retener Fragment - java, android, multithreading, android-fragments

Conservar datos de fragmentos sin conservar fragmentos: java, android, multiprocesamiento, fragmentos de android

Estoy trabajando en una aplicación, que necesita hacer muchos cálculos en segundo plano.
Para hacer esto, comienzo un hilo desde un fragmento ypasarle un controlador para que pueda devolver los mensajes. Cuando se produce un cambio de configuración (rotación de pantalla, ...) Android recrea la Actividad y el Fragmento. Estoy buscando una manera de obtener una referencia al hilo desde el nuevo Fragmento, para poder pasarle un nuevo controlador.

Retener todo el Fragmento no es una opción para mí, ya que utiliza un diseño diferente en modo horizontal.

No puedo usar onRetainNonConfigurationInstance (), ya que solo se admite en Actividades, pero mi hilo vive en un fragmento.

No puedo usar onSaveInstanceState (), ya que solo admite tipos de datos primitivos.

¿Hay alguna otra forma para que conserve una referencia a mi hilo de fondo cuando se recrea el fragmento?

Respuestas

0 para la respuesta № 1

Resolví el problema usando un fragmento retenido sin cabeza, que gestiona el hilo.

Mi fragmento normal crea una nueva instancia del fragmento sin cabeza, que se conserva. El fragmento sin cabeza tiene start() y stop() métodos, que a su vez inician y detienen el hilo y un setHandler() método, que cambia los mensajes del controlador a los que se pasa.
Cada vez que se recrea el fragmento no retenido, solo tiene que obtener el fragmento retenido del FragmentManager y llamar setHandler() con un nuevo controlador.


0 para la respuesta № 2

Puede usar ViewModel de componentes de arquitectura de Android para hacer esto.

Componentes conscientes del ciclo de vida: https://developer.android.com/topic/libraries/architecture/lifecycle

ViewModel de Google: https://developer.android.com/topic/libraries/architecture/viewmodel