Adaga 2 - como evitar a repetição de código para injetar dependências que exigem contexto de atividade
O projeto no qual estou trabalhando tem várias classes de utilitários que requerem contexto de atividade.
Não quero declarar um novo método @Provides para cada atividade que usa a dependência. ou seja, não quero isso:
@Provides
static Navigator providesNavigator(ActivityOne activity) {
returns new Navigator(activity);
}
// ...and in another module
@Provides
static Navigator providesNavigator(ActivityTwo activity) {
returns new Navigator(activity);
}
Em vez disso, declaro esses utilitários em um único ActivityUtilitiesModule e passo nossa BaseActivity que todas as outras atividades estendem. Agora não preciso declarar minha dependência do Navegador x número de vezes.
@Provides
static Navigator(BaseActivity activity) {
return new Navigator(activity);
}
No entanto, Dagger não sabe como satisfazer a dependência de BaseActivity. Isso significa que para cada atividade que eu preciso criar um método fornece que satisfaça a dependência de BaseActivity com a atividade específica que está sendo usada. por exemplo.:
@Provides
static BaseActivity providesBaseActivity(ActivityOne activity) {
return activity;
}
Isso é melhor - eu só preciso repetir esse provedor por atividade, em vez de repetir um provedor para cada classe de utilitário por atividade, mas ainda parece um passo adicional indesejável na configuração do Dagger, e outra coisa que dificulta o código Compreendo.
Existe um padrão que me permita evitar precisar fornecer esse provedor BaseActivity por atividade?