I am confused about Dagger2 in Android. I use two scope. @Singleton, @PerActivity
This is my Code. I simplyfy my code.
//ApplicationComponent.java
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
@Named("packageName") String packageName();
}
//ApplicationModule.java
@Module
public class ApplicationModule {
@Provides
@Singleton
public Context provideApplicationContext() {
return MyApplication.getContext();
}
@Provides
@Singleton
@Named("packageName")
public String providePackageName(Context context) {
return context.getPackageName();
}
}
//UserComponent.java
@PerActivity
@Component(modules = {UserModule.class})
public interface UserComponent {
void inject(MainActivity activity);
}
//UserModule.java
@Module
public class UserModule {
String packageName;
public UserModule(String packageName) {
this.packageName = packageName;
}
@Provides
@PerActivity
UserRepositoryImpl provideUserRepositoryImpl() {
return new UserRepositoryImpl(packageName);
}
}
for inject appVersion, packagename in UserModule
DaggerChatComponent.builder()
.userModule(new UserModule(getApplicationComponent().packageName()))
.build();
but it looks not great. how can i inject when use different Scope??