@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);
}
大家讲道理2017-04-18 09:20:13
Hello@PerActivity
는 dagger2
인터페이스, Scope
의 Component
메서드 및 구현할 생성자 주석 Module
이 있는 클래스에 주석을 달 수 있는 provide
의 사용자 정의 @Inject
입니다. 이 Scope
범위에 있는 로컬 싱글톤입니다.
https://blog.piasy.com//2016/...을 참고하세요
PHP中文网2017-04-18 09:20:13
PerActivity 또는 ActivityScope라고 불리는 주석 이름과는 아무런 관련이 없습니다. 해당 범위는 구성 요소 자체를 초기화하는 사람에 따라 결정됩니다. 예를 들어 예제의 구성 요소가 Activity에 의해 구축된 경우 해당 범위는 다음과 같습니다. 그 활동을 자연스럽게 따라하게 됩니다