Ejemplo en Código:

Creamos una nueva clase en nuestro paquete de observable

En el HomeFragment agregamos la instancia

class HomeFragment : Fragment(), HomeContract.View {

	// ...
	
	private  val availableBalanceObservable = AvailableBalanceObservable()
	
	// ...

	**override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
	
	        // ...
	
	        availableBalanceObservable.addObserver(object: Observer {
	            override fun notifyChange(newValue: Double) {
	                amountValueTextView.text = "$ $newValue"
	            }
	        })
	    }

	// ...

}**

A tener en cuenta

El observador y lo observable son dos entidades que necesitan comunicarse, y debemos gestionarlos de dos maneras diferentes. Cuando me suscribo, también es necesario que elimine la suscripción.

En Android, el ciclo de vida es bastante volátil. Es una buena práctica suscribirse cuando una actividad está a punto de destruirse, ya que si intento notificar a ese observador después de que la actividad ya no exista, se producirá un error.

Es fundamental tener en cuenta que estas dos interfaces están en constante comunicación. En Android, nuestras actividades siguen un ciclo de vida. Al llegar al método onDestroy, es muy recomendable suscribirse a todos los eventos del observador. Esto es importante porque si el observador emite un evento cuando la actividad ya no está en pantalla, se generará una excepción de puntero nulo.

También es importante tener en cuenta que los observadores y el observador tienen un tipo de dato. Podemos personalizar este tipo de dato utilizando genéricos, lo que asegura que estas interfaces no solo sirvan para el tipo de dato 'double' que estamos utilizando en el proyecto.

Te invito a ser muy cauteloso y entender cómo implementar esto, ya que la librería 'Reactive Tests' se basa en este patrón de comportamiento.

Untitled