El uso de ARouter de Alibaba en Android (salto de interfaz entre módulos y transferencia de datos)

1. Al desarrollar un proyecto relativamente grande, se debe considerar la modularización y dividir todo el proyecto en n módulos. De esta manera, cada módulo es responsable de un sistema empresarial, lo que facilita el desarrollo iterativo posterior y hace que el departamento de proyectos esté menos sobrecargado. Compilado por separado, cada módulo se puede ejecutar de forma independiente. Finalmente, cada módulo se agrega a una aplicación host y se fusiona en un proyecto completo.

Después de dividirse en módulos, saltar entre interfaces es un gran problema. Utilice la biblioteca de código abierto ARouter de Alibaba para resolver este problema.

En proyectos tradicionales, nuestro negocio está todo bajo un solo módulo. Intenter se utiliza para saltar entre interfaces. Esto hace que el código esté altamente acoplado. startActivity(new intentor(testActivity.this,test2Activity.class)); También hay un método de salto implícito 

Intent intent = new Intent();

intent.setAction(“com.android.activity.MY_ACTION”);  

startActivity(intención); estoAction 也要在Mainfest.xml注册。也有弊端扩展性很差。

再分模块的项目和一个模块下 界面与界面的跳转  我们都可以用ARouter框架.

2.接下来就在自己的项目中用起来,我这里写一个Demo

Dirección de GitHub de enrutamiento de código abierto de Alibaba: https://github.com/alibaba/ARouter    

Abra su dirección y agregue dependencias relevantes según su configuración. Principalmente estos dos lugares: si el proyecto se sincroniza nuevamente y no se informa ningún error, significa que la introducción fue exitosa.

android { 
  	
    defaultConfig { 
        javaCompileOptions { 
            annotationProcessorOptions { argumentos = 
[ 
                AROUTER_MODULE_NAME: project.getName()] } 
            } 
        } 
    }
dependencias { 
		
    implementación 'com.alibaba:arouter-api:1.5.0' //La versión aquí se basa en la última versión en github 
    annotationProcessor 'com.alibaba:arouter-compiler:1.2.2' //La versión aquí se basa en github Prevalecerá la última versión 
}

3. Cree una aplicación global para inicializar configuraciones relacionadas.

clase pública MiAplicación extiende Aplicación { 
    boolean isDebug=true; 
    @Override 
    public void onCreate() { 
        super.onCreate(); 
        if (isDebug){    
//这2个必须要在初始化之前开启。Estas dos líneas deben escribirse antes del inicio; de lo contrario, estas configuraciones //no serán válidas en el proceso de inicio 
            ARouter.openLog(); 
            ARouter.openDebug(); 
 // Active el modo de depuración (si está ejecutando el modo InstantRun, ¡debe activar el modo de depuración! La versión en línea // debe estar cerrada; de lo contrario, existe un riesgo de seguridad) } ARouter.init(this 
        ) 
        ; //初始化SDK Lo antes posible, se recomienda inicializar en 
    } 
}

4. Crea 2 nuevas actividades de prueba. 

la clase pública MainActivity extiende AppCompatActivity { 
     Botón but_onClick; 
    @Override 
    protected void onCreate(Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        initView(); 
        eventoinit(); 
    } 
    private void initView() { 
        but_onClick=(Botón) findViewById(R.id.but_onClick); 
    } 
    private void initEvent() { 
                // 点击界面跳转
            but_onClick.setOnClickListener(new View.OnClickListener() { 
                @Override 
                public void onClick(Ver vista) {
                    //1.简单的跳转
        // ARouter.getInstance().build("/test/testActivity").navigation(); // La ruta aquí es la dirección de anotación para saltar a la interfaz 
                    // 2. Generalmente, el salto de interfaz debe llevar el parámetro 
                    ARouter .getInstance().build("/test/testActivity") 
                            .withString("userName","Zhang San") 
                            .withInt("age",123) 
                            .navigation(); 
                } 
            }); 
    } 

}

5.Esta es la interfaz a la que saltar

// Agregar anotaciones en páginas que admiten enrutamiento (obligatorio) 
// La ruta aquí debe prestar atención y necesita al menos dos niveles: /xx/xx 至少2级
@Route(path = "/test/testActivity") 
clase pública TestActivity extiende AppCompatActivity { 
    @Autowired 
    public String nombre de usuario; 
    @Autowired 
   público int edad; 
    @Override 
    protected void onCreate(@Nullable Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_test); 
        ARouter.getInstance().inject(esto); //注入
        Log.d("TAG",nombredeusuario+edad); 
    } 
}

6. Lo anterior es el salto de la interfaz debajo de un módulo. En realidad, es muy simple. También está el salto de Fragmento. Las rutinas son las mismas. Solo mire la API que proporciona.

7. Cree un nuevo módulo, pero este módulo no es una aplicación, sino una biblioteca, ésta es la diferencia entre los dos. 

aplicar complemento: 'com.android.application' aplicar complemento: 'com.android.library'

8. Aquí hay una imagen aproximada:

9. Diagrama de estructura de mi proyecto:

10. Agregue 3 dependencias de módulo en build.gradle de la aplicación: baselib, secondtest, testmoudle, como se muestra en la figura:

11. Aquí salto de la interfaz MainActivity de la aplicación host a la interfaz ThreeActivity de baselib:

la clase pública MainActivity extiende AppCompatActivity { 
     Botón but_onClick; 
    @Override 
    protected void onCreate(Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        initView(); 
        eventoinit(); 
    } 
    private void initView() { 
        but_onClick=(Botón) findViewById(R.id.but_onClick); 
    } 
    private void initEvent() { 
                // 点击界面跳转
            but_onClick.setOnClickListener(new View.OnClickListener() { 
                @Override 
                public void onClick(Ver vista) { 
                    //1.简单的跳转
        // ARouter.getInstance().build("/test/testActivity").navigation(); // La ruta aquí es la dirección de anotación para saltar a la interfaz 
                    // 2. Generalmente, el salto de interfaz debe llevar el parámetro 
                 ARouter .getInstance().build("/test/demoActivity") 
                            .withString("userName","Zhang San") 
                            .withInt("age",123) 
                            .navigation(); 



                } 
            }); 

    } 

}
@Route(path = "/test/demoActivity") 
clase pública ThreeActivity extiende AppCompatActivity { 
    Botón but_test; 
    @Autowired 
    public String nombre de usuario; 
    @Autowired 
    público int edad; 
    @Override 
    protected void onCreate(@Nullable Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_tres); 
        ARouter.getInstance().inject(esto); 
        Log.d("TAG",nombre de usuario+edad); 

    } 

}

12. Saltos de interfaz y transferencia de datos entre módulos: los saltos de interfaz y la transferencia de datos se realizan bajo los dos módulos baselib y testmoudle.

@Route(path = "/test/demoActivity") 
clase pública ThreeActivity extiende AppCompatActivity { 
    Botón but_test; 
    @Autowired 
    public String nombre de usuario; 
    @Autowired 
    público int edad; 
    @Override 
    protected void onCreate(@Nullable Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_tres); 
        ARouter.getInstance().inject(esto); 
        Log.d("TAG",nombre de usuario+edad); 
            initView(); 

    } 
    private void initView() { 
        but_test=(Botón) findViewById(R.id.but_test); 
        but_test.setOnClickListener (nueva Vista.OnClickListener() {
            @Anular
            public void onClick(Ver vista) { 
                ARouter.getInstance().build("/testmoudle1/MainActivity") 
                        .withString("userName","张三") 
                        .withInt("age",123) 
                        .navigation(); 


            } 
        }); 
    } 

}
@Route(path = "/testmoudle1/MainActivity") 
clase pública FiveActivity extiende AppCompatActivity { 
    @Autowired 
    public String nombre de usuario; 
    @Autowired 
    público int edad; 

    @Override 
    protected void onCreate(@Nullable Bundle saveInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_five); 
        ARouter.getInstance().inject(esto); 
        Log.d("TAG","testmoudle"+nombredeusuario+edad); 
    } 
}

Resumir:

Presenté los archivos de configuración relevantes en el archivo público baselib build.gradle. Y necesita introducir archivos de configuración en otros módulos. Si no se introduce, se informará un error, que no está claro. Sólo estas 3 cosas. Aquí sólo se realizan saltos de interfaz y transferencia de datos. Otras operaciones se actualizarán la próxima vez.

javaCompileOptions { 
    annotationProcessorOptions { 
        argumentos = [AROUTER_MODULE_NAME: proyecto.getName()] 
    } 
}
implementación 'com.alibaba:arouter-api:1.5.0' 
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/beautifulYuan/article/details/93192105
Recomendado
Clasificación