Ответ 1
Я написал код с верхней части головы, поэтому может быть опечатка или две.
Вы делаете это точно так же, как при вводе материала в действия.
- Объявить компонент,
- добавьте метод инъекции к этому компоненту,
- добавить модуль, предоставляющий вашу службу
- создать компоновщик компонентов
- добавьте свой модуль в конструктор
- введите свою службу компонентом
Ваш модуль и компонент будут выглядеть примерно так (возможно, добавить некоторые области)
@Module
class ServiceModule {
MyService mService;
ServiceModule(MyService service) {
mService = service;
}
@Provides
MyService provideMyService() {
return mService;
}
}
@Component(modules=ServiceModule.class)
interface MyServiceComponent {
void inject(MyService service);
}
Затем в onCreate
просто создайте свой компонент и введите свой сигнал тревоги.
@Inject
private SomeAlarm alarm;
public void onCreate() {
DaggerMyServiceComponent.builder()
.serviceModule(new ServiceModule(this))
.build()
.inject(this);
alarm.doStuff();
}
Это предполагает, что ваш аварийный сигнал может быть сконструирован конструктором с помощью конструктора с комментариями @Inject
, как это:
class SomeAlarm {
@Inject
SomeAlarm(MyService service) {
/*constructor stuff*/
}
}
Иначе вы просто добавили бы создание тревоги в свой модуль.