検索

ホームページ  >  に質問  >  本文

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日前349

全員に返信(2)返信します

  • 大家讲道理

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

    Hello@PerActivitydagger2 のカスタム Scope であり、Component インターフェース、Moduleprovide メソッド、および実装するコンストラクター アノテーション @Inject を持つクラスにアノテーションを付けることができます。この Scope スコープ内のローカル シングルトン。
    https://blog.piasy.com//2016/...を参照してください

    返事
    0
  • PHP中文网

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

    それが PerActivity と呼ばれるか、ActivityScope と呼ばれるかに関係なく、そのスコープは、コンポーネント自体を初期化する人によって決まります。たとえば、例のコンポーネントがアクティビティによって構築されている場合、そのスコープは決まります。自然にそのアクティビティに従います

    返事
    0
  • キャンセル返事