私は頭の上からコードを書いたので、タイプミスまたは2つのミスがあります。
アクティビティにスタッフを注入するときとまったく同じです。
- コンポーネントビルダー
- はビルダー
- 注入するあなたのモジュールを追加することを作成し、あなたのサービスを提供するモジュールを追加
- 、そのコンポーネントにインジェクトメソッドを追加
- 、コンポーネントを宣言コンポーネントを使用したサービス
モジュールとコンポNENTは自分のコンポーネントを作成onCreate
に
@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);
}
その後(おそらくいくつかのスコープを追加)したり、アラームを注入、このようになります。
@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*/
}
}
は、あなただけのも、あなたのモジュールにアラームの作成を追加します。
なぜdownvoteすべきですか?ビルダ()(大文字B) を呼んでいたことが判明しましたか –