1,
implementation 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
一般用法:
初始化的2种方式: 第二种方式适应于传参
DaggerUserComponet.create().inject(this);
DaggerUserComponet.builder()
.userModule(new UserModule())
.build()
.inject(this);
2,module:
@Module
public class UserModule {
@Provides
public UserManger provideUserManager(){
return new UserManger();
}
}
3,component
@Component(modules = {UserModule.class})
public interface UserComponet {
void inject(MainActivity activity);
}
4,实例
public class UserManger {
public UserManger( ){
}
public void register(){
System.out.println("-----------usermanager register"+this);
}
}
5,mainActivity
public class MainActivity extends AppCompatActivity {
@Inject
UserManger mUserManger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerUserComponet.create().inject(this);
mUserManger.register();
}
}
高级用法:Singleton
1, module
@Module
public class UserModule {
@Singleton
@Provides
public UserManger provideUserManager(){
return new UserManger();
}
}
2, Componet
@Singleton
@Component(modules = {UserModule.class})
public interface UserComponet {
void inject(MainActivity activity);
}
3,activity
public class MainActivity extends AppCompatActivity {
@Inject
UserManger mUserManger1;
@Inject
UserManger mUserManger2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerUserComponet.create().inject(this);
mUserManger1.register(); // 打印出来的地址是:UserManger@920c66b Singleton 后 UserManger@920c66b
mUserManger2.register(); // 打印出来的地址是:UserManger@12b45c8 Singleton 后 UserManger@920c66b
}
}
高级用法:name