基本的には常に実行され、何かが発生するとユーザーに警告するサービスであるアプリがあります。
サービスがアラームを作成する場合、何かが発生したときにアラームがサービスに対してcallbacksできるように、context
を与える必要があります。
例えば:
public MyService extends Service{
private SomeAlarm alarm;
@Override
public void onCreate() {
super.onCreate();
alarm = new SomeAlarm(MyService.this);
}
}
SomeAlarm
クラスをサービスに挿入し、SomeAlarm
に変数としてサービスコンテキストを与えるにはどうすればよいですか?
私は頭のてっぺんからコードを書いたので、タイプミスがあるかもしれません。
アクティビティに何かを注入するときと同じように行います。
モジュールとコンポーネントは次のようになります(おそらくスコープを追加します)
@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*/
}
}
それ以外の場合は、モジュールにアラーム作成を追加するだけです。