您的位置:首页 > 其它

最简单的安卓下Dagger2注入

2016-01-11 15:17 274 查看
首先,对于需要注入的内容添加@Inject。

例如,在MainActivity里面需要一个InterfaceA类型对象

MainActivity extends Activity{
@Inject
InterfaceA ia;
}


然后需要@Module类,该类里通过@Provides方法为@Inject进行注入

@Module
class ModuleA {
Aa = new A();//A实现了接口InterfaceA
@Provides
Interface AprovideInterfaceA(){
return a;
}
}


最后,@Component定义一个接口,在接口中提供注入点。

@Singleton
@Component(module = ModuleA.class)
public interface AComponent(){
void injectA(MainActivity act);
}


在MainActivity注入时调用injectA方法即可完成注入。

但是调用injectA方法的前提是你需要有一个AComponent对象,这个对象通过Daager2在编译时自动生成的一个DaggerAComponent来类来获得。所以,可以让MainActivity继承BaseActivity,在BaseActivity中完成AComponent接口的实例化。

BaseActivity extends Activity{
AComponentcomponent;
onCreate(Bundleb){
super.onCreate(b);
component = DaggerAComponent.builder.moduleA(new ModleA()).build();
}
public AComponent getComponent(){
return component;
}
}


MainActivity继承BaseActivity,通过getComponent方法获得AComponent对象:

MainActivity extends BaseActivity{
@Inject
InterfaceA ia;
onCreate(Bundleb){
super.onCreate(b);
setContentView(R.layout.main);
getComponent().inject(this);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: