Navegación en aplicación multimodular con DeepLinks | de Rahul Ray | julio 2022

Hola desarrolladores de Android, en este artículo analizamos la implementación de la navegación en varios módulos de funciones.¿Cuál es el problema?Recientemente configuré un proyecto sin composición de forma multimodular. De acuerdo con mi caso de uso, estaba No convencido para llevar arquitectura de actividad únicaen cambio yo estaba buscando algo como al menos una actividad por módulo funcional, es decir; Cada módulo funcional debe tener al menos una actividad como punto de entrada. La navegación Jetpack puede funcionar bastante bien en un enfoque de varios módulos. Aún así, se basa principalmente en fragmentos. Creo que en grandes proyectos habrá muchos casos en los que será mejor tener actividades en lugar de fragmentos ya que las actividades tienen su propio ciclo de vida y la vida será mucho más fácil.¿Por qué enlaces profundos?Hay otras formas de navegar a través de los módulos, pero la razón principal para elegir el enfoque de DeepLink es que es independiente de la plataforma. En el futuro, puede haber casos en los que lancemos algunas funciones y queramos que nuestros usuarios vayan directamente a ese módulo de funciones en particular simplemente tocando un enlace. Entonces sería mucho más fácil y comparativamente más rápido escalar.El método
- Crearemos una actividad como punto de entrada para cada módulo.
- Para cada una de las actividades, creamos un procesador que lanza una actividad específica después de asegurarse de que el enlace profundo entrante esté destinado a esa actividad.
Basta de hablar, ahora hagámosloPrimero, configure un proyecto sin composición y cree dos módulos de funciones llamados Característica_01 y Característica_02 y un Vena módulo al lado de eso Departamento Módulo.La dependencia del módulo se puede definir comoDepartamento depende de todos los modulos Vena, Característica_01 y característica_02característica_01 depende de VenaCaracterística_02 depende de VenaVena no depende de nada Aquí, el Vena es el módulo común para todos los demás módulos. Luego, dentro del módulo principal, cree un paquete de navegación que contenga algunas clases e interfaces que se usan para definir procesadores de enlace profundo para cada uno de los módulos funcionales. Primero, cree una interfaz DeeplinkProcessor. Tendrá dos funciones, una para hacer coincidir el enlace profundo y otra para ejecutar el inicio de actividad después de la coincidencia. Luego, cree un controlador que tenga solo una función llamada proceso que sería responsable de ejecutar el procesador. Después de eso vamos a crear uno Controlador predeterminado que será una implementación de este DeeplinkHandler. Llama a la función de ejecución para el primer procesador encontrado que coincida con el enlace profundo. Ahora creamos actividades para cada uno de los módulos funcionales, a saber Característica01Actividad y Característica02Actividad. En consecuencia, también crearemos DeeplinkProcessors para ambos, a saber Feature01DeeplinkProcesador y Feature02DeeplinkProcesador.Hacia Feature02DeeplinkProcesadortambién podemos procesar algunos datos adicionales que vienen con el enlace. Hasta ahora tenemos todos los componentes básicos desde los que navegar Característica_01 a Característica_02. Ahora todo lo que tenemos que hacer es ponerlo todo junto en acción. Ahora administrar instancias de todos estos procesadores puede ser tedioso ya que tendremos n módulos en nuestra aplicación. Para ayudarnos con esto usaremos mango de daga para implementar y ejecutar todos los procesadores definidos en los módulos. En nuestro módulo de aplicación, cree un objeto llamado módulo de aplicación que proporciona contexto de aplicación y un controlador de enlace profundo para manejar todos los procesadores definidos proporciona DefaultDeeplinkHandler() Necesitamos proporcionar un conjunto de procesadores, pero dado que DeeplinkProcessor es una interfaz, no podemos proporcionarlo simplemente creando una instancia, por lo que solo debemos vincularlo con empuñadura. Esto unirá todos los procesadores al conjunto requerido para construir Controlador predeterminado.Ahora podemos agregar este controlador predeterminado al nuestro actividad principal y lidiar con enlaces profundos. Antes de pasar a la parte de navegación real, necesitamos definir el planificar y anfitrión para MainActivity en el archivo manifest.xml. Ahora podemos probar la navegación de la siguiente manera: Aquí hay una demostración de la navegación entre módulos.Consulte el repositorio de muestra aquí. Conectémonos en LinkedIn y Gorjeo!Diviértete programando!