我将moduleA设置为应用程序范围的单例提供程序,ModuleB作为用户相关的对象提供程序
我的用户显示片段将使用系统总线向他人发送消息并使用用户相关对象进行显示.
问题不能将不同的scrope类注入一个对象.使用component.getX方法工作正常,但注入是首选方式.错误消息: @ UserScope可能无法引用具有差异范围的绑定:@Provides @Singleton Bus ModuleA.provideBus()
@Module
public class ModuleA {
@Provides @Singleton Bus provideBus() {...}
}
Run Code Online (Sandbox Code Playgroud)
模块B作为用户相关的信息提供者
@Module
public class ModuleB{
private final User user;
public ModuleB(User user) {...}
@Provides @UserScope User provideUser() {}
@Provides @UserScope UserManager provideUserManager() {}
}
Run Code Online (Sandbox Code Playgroud)
组件设置如下:
@Component (modules={ModuleA.class})
@Singleton
public interface ComponentA {
Bus getBus();
void inject(ClassA target);
}
@Component(modules={ModuleB.class})
@UserScope
public interface ComponentB {
User getUser();
UserManager getUserManager();
void inject(ClassA target);
}
class UserFragment exrtends Fragment {
@Inject Bus bus;
@Inject …Run Code Online (Sandbox Code Playgroud)