私はAndroidアプリケーションを持っています。これは、AlarmManagerを使用してイベントをスケジュールします。AlarmManagerからインテントを受信すると、ドメインロジックは、DBへのアクセスやインテントのブロードキャストなどの作業を行う必要があります。現在、シングルトンを使用して、BroadcastReceiver(マニフェストに登録されている)からドメインロジックにアクセスします。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Singleton.getInstance().onAlarmFired();
}
}
このシングルトンは、同じようにアクティビティとサービスで使用されます。正常に動作しますが、シングルトンはアンチパターンと見なされており、コードをテストでカバーしたいので、別の解決策を探しています。
問題は、このシングルトンの代わりにサービスを使用する方が良いのではないかということです。このような:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
startService(new Intent(intent.getAction());
}
}
メリットとデメリットは何ですか?そして、アクティビティからサービスと通信するための最良の方法は何でしょうか?MyApplicationでサービスにバインドし、getApplication()メソッドを使用してアクティビティとサービスへの参照を提供することを考えています。