我正在尝试使用 Dagger2 构建一个简单的跨模块依赖项。
当我重新构建项目时,所有 DaggerComponents 都会关闭。
我有应用程序的通用应用程序依赖注入包:
组件 - 一般 DI
@Singleton
@Component( modules = { MyAppModule.class } )
public interface MyAppComponent {
void inject( MyApp application );
}
模块 - 一般 DI
@Module
public class MyAppModule {
private MyApp mMyApp;
public MyAppModule( MyApp application ) {
mMyApp = application;
}
@Singleton
@Provides
public Application provideApplication() {
return mMyApp;
}
@Singleton
@Provides
public SharedPreferences provideSharedPreferences( MyApp application ) {
return PreferenceManager.getDefaultSharedPreferences( application );
}
@Singleton
@Provides
public MyDatabase provideMyDatabase() {
return new MyDatabase();
}
@Singleton
@Provides
public MyRepositoryContract provideMyRepository( MyDatabase database, SharedPreferences sharedPreferences ) {
return new MyRepository( database, sharedPreferences );
}
}
我有一个名为 Main 的层需要使用 MyRepository,但是当我尝试执行依赖项时,一切都会下降。
组件 - 主 DI(MyApp 依赖)
@MainScope
@Component( dependencies = { MyAppModule.class }, // <- Contains requested provider
modules = { MainModule.class } )
public interface MainComponent {
void inject( MainActivity view );
}
模块 - 主 DI(MyApp 依赖)
@Module( includes = { MyAppModule.class } ) // <- Contains requested provider
public class MainModule {
private final MainContract.View mView;
@MainScope
public MainModule( MainContract.View view ) {
mView = view;
}
@MainScope
@Provides
public MainContract.Model provideModel( MyRepositoryContract repository ) {
return new MainModel( repository ); // <- My requested object from MyApp DI package
}
@MainScope
@Provides
public MainContract.View provideView() {
return mView;
}
四季花海
相关分类