目标类
public class B {module类
@Inject
public B() {
}
public String getName(){
return "BBBBBBB";
}
}
@Modulecomponent类
public class AModule {
//单例获取
@Singleton
@Provides
A providesA(){
return new A();
}
}
@Singletonactivity
@Component(modules = AModule.class)
public interface AComponent {
void inject(NewActivity act);
}
public class NewActivity extends AppCompatActivity {打印结果为:
@Inject
A a1;
@Inject
A a2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
//实例化component对象
AComponent component = DaggerAComponent.builder().aModule(new AModule()).build();
//注入
component.inject(this);
//single单例只适用于一个component,也就是说下一个activity中又是不同的对象了
Log.e("---------",a1.toString()+" "+a2.toString());
}
}
com.iwith.dagger.xinde.A@d1f1395 com.iwith.dagger.xinde.A@d1f1395
注意点:
1:module中需要添加@singleton
2:component需要添加@singleton,不然会编译不过
3:这个只能在同个activity中,如果在另一个activity中的话,创建的实例就会使另一个了,不会是单例了,可见,@singleton只对一个component有效,即其单例所依赖component对象