组件间通信

2023-04-11  本文已影响0人  couriravant

在 Android 中,一个应用程序通常由多个模块(Module)组成,每个模块负责不同的功能。在模块之间进行通信时,必须建立依赖关系,以便在编码时可以访问另一个模块提供的代码和资源。

如果没有建立依赖关系,那么一个模块无法访问另一个模块的代码和资源,也无法调用其中的方法和类。这是因为在编译期间,每个模块都是独立编译的,每个模块的代码和资源都被打包成一个独立的 APK 或 AAR 文件,相互之间是隔离的。
为什么需要组件间通信呢,是因为在编译期不同组件之间无法引用对方的代码,那么要实现组件间通信的方法就是避开编译期的限制,主要方法有运行时引用(反射、动态代理), 代码插桩(class修改,已经编译过了,所以没有限制);

比如A组件有代码:

class TestA {
    public String getId() {
        return "123";
    }
}

B组件需要调用A组件的getId方法:
那么在B组件中可以使用:

// 反射
Class<?> clazz = Class.forName("com.example.TestA");
        Method method = clazz.getMethod("getId");
        Object obj = clazz.newInstance();
        String id = (String) method.invoke(obj);
        System.out.println(id);
    }
上一篇 下一篇

猜你喜欢

热点阅读