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

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

répondre à tous(2)
大家讲道理

Bonjour@PerActivity est un dagger2 personnalisé de Scope, qui peut être annoté sur l'interface Component, la méthode Module de provide et la classe avec l'annotation de constructeur @Inject à implémenter ce Scope Singleton local dans la portée.
Veuillez vous référer à https://blog.piasy.com//2016/...

Ty80

Cela n'a rien à voir avec le nom de l'annotation, qu'elle s'appelle PerActivity ou ActivityScope. Sa portée est déterminée par la personne qui initialise votre composant lui-même. Par exemple, si le composant de votre exemple est construit par Activity, sa portée. suivra naturellement cette activité

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal