android - 关于dagger2的几个问题
ringa_lee
ringa_lee 2017-04-18 09:18:13
0
2
346

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_lee
ringa_lee

ringa_lee

membalas semua(2)
大家讲道理

Helo@PerActivity ialah dagger2 tersuai Scope, yang boleh dianotasi pada antara muka Component, kaedah Module provide dan kelas dengan anotasi pembina @Inject untuk dilaksanakan ini Scope tunggal tempatan dalam skop.
Sila rujuk https://blog.piasy.com//2016/...

Ty80

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan