Android 子模块如何调用主模块

在Android开发中,主模块和子模块之间的通信是一个常见的问题。本文将介绍如何让子模块调用主模块的功能,以解决一个具体的问题:在主模块中提供一个获取当前用户信息的方法,让子模块可以调用。

实现步骤

步骤一:在主模块中定义接口

首先,在主模块中定义一个接口UserRepository,用于获取当前用户信息。

public interface UserRepository {
    User getCurrentUser();
}

同时,在主模块中实现UserRepository接口,并提供获取当前用户信息的具体实现。

public class UserRepositoryImpl implements UserRepository {
    
    @Override
    public User getCurrentUser() {
        // 获取当前用户信息的具体实现
        return new User("Alice", "alice@example.com");
    }
}

步骤二:在主模块中暴露接口实例

在主模块中,将UserRepositoryImpl实例暴露出来,以供子模块调用。

public class MainModule {

    private static UserRepository userRepository = new UserRepositoryImpl();

    public static UserRepository getUserRepository() {
        return userRepository;
    }
}

步骤三:在子模块中调用主模块接口

在子模块中,通过MainModule.getUserRepository()方法获取UserRepository实例,然后调用getCurrentUser()方法获取当前用户信息。

UserRepository userRepository = MainModule.getUserRepository();
User currentUser = userRepository.getCurrentUser();

完整代码示例

主模块代码

public interface UserRepository {
    User getCurrentUser();
}

public class UserRepositoryImpl implements UserRepository {
    
    @Override
    public User getCurrentUser() {
        // 获取当前用户信息的具体实现
        return new User("Alice", "alice@example.com");
    }
}

public class MainModule {

    private static UserRepository userRepository = new UserRepositoryImpl();

    public static UserRepository getUserRepository() {
        return userRepository;
    }
}

子模块代码

UserRepository userRepository = MainModule.getUserRepository();
User currentUser = userRepository.getCurrentUser();

总结

通过上述步骤,我们成功实现了子模块调用主模块的功能,解决了获取当前用户信息的问题。在Android开发中,主模块和子模块之间的通信是非常重要的,合理的设计和实现可以提高代码的可维护性和扩展性。希望本文对您有所帮助!

pie
    title 饼状图示例
    "A": 30
    "B": 20
    "C": 50
journey
    title 旅行图示例
    section A
    A --> B: 步骤1
    B --> C: 步骤2
    C --> D: 步骤3