찾다

 >  Q&A  >  본문

android - 关于dagger2的几个问题

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);
}

ringa_leeringa_lee2771일 전353

모든 응답(2)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 09:20:13

    Hello@PerActivitydagger2 인터페이스, ScopeComponent 메서드 및 구현할 생성자 주석 Module이 있는 클래스에 주석을 달 수 있는 provide의 사용자 정의 @Inject입니다. 이 Scope 범위에 있는 로컬 싱글톤입니다.
    https://blog.piasy.com//2016/...을 참고하세요

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:20:13

    PerActivity 또는 ActivityScope라고 불리는 주석 이름과는 아무런 관련이 없습니다. 해당 범위는 구성 요소 자체를 초기화하는 사람에 따라 결정됩니다. 예를 들어 예제의 구성 요소가 Activity에 의해 구축된 경우 해당 범위는 다음과 같습니다. 그 활동을 자연스럽게 따라하게 됩니다

    회신하다
    0
  • 취소회신하다