Я использую dagger-android в своем приложении с аннотацией @ContributesAndroidInjector.
@Module
public abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = BleDevicesModule.class)
abstract BleDevicesActivity bindBleDevicesActivity();
}
@Module
class BleDevicesModule {
...
@Provides
fun provideBleObserver(bleRepository: IBluetoothRepository): IObservableUseCase<List<Device>> {
return GetAllAvailableBleDevicesUseCase(bleRepository)
}
@Provides
fun providePairDeviceUseCase(bleRepository: IBluetoothRepository): ISingleUseCaseWithParameter<Device, Boolean> {
return ConnectDeviceUseCase(bleRepository)
}
@Provides
fun provideBleRepository(bluetoothManager: BluetoothManager, context: Context,
authorBleScanner: AuthorBleScanner, authProvider: IAuthProvider): IBluetoothRepository {
return BluetoothRepository(bluetoothManager, context, authorBleScanner, authProvider)
}
}
Я понимаю, что у меня создано 2 варианта использования, использующих зависимость IBluetoothRepository;
, поэтому *Метод 1006 * вызывается дважды, и каждый раз создается новый объект BluetoothRepository со всеми его зависимостями.Как сделать объект хранилища одиночным?В качестве глупого решения я использую переменную внутри BleDevicesModule, инициализирую и возвращаю ее из provideBleRepository()
, но я думаю, что должен быть более простой способ