Enfoque eficaz de navegación y enlace directo para el desarrollo de Android Author: M. Ali Yüce | Octubre de 2020

Acceso

Vamos a construir algo para resolver este problema una vez y usarlo para el resto de la aplicación.

Nombramos esta arquitectura como enrutador, por lo que primero necesitamos crear una interfaz para administrar todos los enrutadores juntos; el nombre de la interfaz será enrutable. Esto muestra una clase que puede apuntar a alguna actividad desde un enlace directo o una llamada línea por línea.

Las clases de enrutamiento tendrán dos responsabilidades, puedes agregar tus propias llamadas y hacerlas más de 2 responsabilidades, pero todas las clases enrutables deben administrar un enlace directo y navegación básica a la actividad con esos datos.

La interfaz enrutable se verá así:

Hemos declarado funciones predeterminadas en la interfaz Routable, además, el desarrollador puede anular todos estos métodos si es necesario realizar cambios en la clase Routable.

¡Hagámoslo enrutable!

En este ejemplo, queremos llevar al usuario a un detalle de película con el parámetro movieId dado.

MovieDetail tiene un código de enlace directo que es 1 y la actividad es MovieDetailActivity para navegar.

Reescribimos el método que lleva al usuario a la actividad para analizar el Uri dado, tomamos filmId del parámetro de datos para navegar al usuario en la pantalla de detalles de la película relacionada.

Ahora nuestro MovieDetailRouter 2 tiene funciones: MovieDetailRouter.startActivity (context, someData) o MovieDetailRouter.startDeepLink (context, someUri).

Creamos nuestro primer enrutador, ahora deberíamos crear una clase que administrará las operaciones de enlace directo en él.

A esta clase la llamamos enrutador, esta clase tiene control sobre las funciones de un código dado desde todas las rutas y, si existe, comienza una conexión profunda. Implementé rutas como Array, pero también puedes hacerlo usando SparseArray, si tienes muchas rutas, sería mejor para la gestión del rendimiento.

CÓMO UTILIZAR

Hemos completado la construcción de la arquitectura, hagámosla útil.

Primero verificamos si la intención tiene los datos que desean para navegar al usuario desde el enlace directo, si no, navegamos al usuario usando nuestro MovieDetailRouter con parámetros personalizados.

¿QUÉ MÁS PUEDE SER?
Puede alimentar sus clases desde cualquier dependencia de inyección para controlar algo sobre el usuario o realizar algún caso de uso. Pero en mi opinión, un enrutador debe ser una forma de responsabilidad única que hace que los enrutadores solo enrutadores.

En la clase MovieDetailRouter, también puede agregar llamadas a funciones personalizadas a la actividad, como iniciar una actividad para obtener un resultado, etc.

Puede agregar una función que regrese al desarrollador routerData facilita el trabajo de los desarrolladores:

fun <Data : Parcelable> getRouterData() =
intent?.extras?.getParcelable<Data>(Routable.ROUTE_DATA)

A continuación, se muestra un ejemplo de cómo funciona un enrutador:

Se está ejecutando un enrutador Deep Link

¡Gracias por su valioso tiempo!

Si encuentra útil este artículo, no lo olvide aplaudir 🤗

más:

LinkedIn: https://www.linkedin.com/in/mayuce

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *