the*_*man 5 dependency-injection dagger
在Guice中,我完全控制了构造模块的时间,并使用了一些模块和我安装的构造函数参数.
然而,在Dagger中,引用其他模块的方法是通过@Module包含注释,并没有给我提供创建要安装的模块的相同方法.
是否有可能从具有构造函数参数的多个模块创建一个理智的ObjectGraph?特别是一个可以使用匕首编译器,而不会遇到循环图的人?
如果您有多个模块使用同一个对象,那么也许您应该将该对象分离到其自己的模块中。例如,许多模块使用应用程序上下文,因此我有以下模块:
@Module
public class ContextModule {
private final Context mContext;
public ContextModule(Context context) {
mContext = context;
}
@Provides
public Context provideContext() {
return mContext;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,现在在其他模块中,当我需要上下文对象时,我只需包含该模块。
例如:
@Module(entryPoints = { MyFragment.class }, includes = { ContextModule.class })
public class ServicesModule {
@Provides
public LocationManager provideLocationManager(Context context) {
return (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
}
@Provides
public Geocoder provideGeocoder(Context context) {
return new Geocoder(context);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我构造对象图时,我最终只得到一个将应用程序上下文作为其参数的模块。
| 归档时间: |
|
| 查看次数: |
5288 次 |
| 最近记录: |