Scope:@PerActivity 这个注解是怎么起作用的呢?
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface PerActivity {
}
@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = ActivityModule.class)
public interface ActivityComponent {
void inject(MainActivity mainActivity);
}
public ActivityComponent getActivityComponent() {
if (activityComponent == null) {
activityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(DemoApplication.get(this).getComponent())
.build();
}
return activityComponent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActivityComponent().inject(this);
mTvUserInfo = (TextView) findViewById(R.id.tv_user_info);
mTvAccessToken = (TextView) findViewById(R.id.tv_access_token);
}
Helo
@PerActivity
ialahdagger2
tersuaiScope
, yang boleh dianotasi pada antara mukaComponent
, kaedahModule
provide
dan kelas dengan anotasi pembina@Inject
untuk dilaksanakan iniScope
tunggal tempatan dalam skop.Sila rujuk https://blog.piasy.com//2016/...
Ia tiada kaitan dengan nama anotasi, sama ada ia dipanggil PerActivity atau ActivityScope. Skopnya ditentukan oleh siapa yang memulakan Komponen anda sendiri Contohnya, jika Komponen dalam contoh anda dibina oleh Activity, skopnya secara semula jadi akan mengikuti aktiviti itu