Intent私が持っている のためにを作成しServiceています:
_myServiceIntent = new Intent(this, typeof(MyServiceCls));
これは機能しますが、MyServiceCls依存関係があります。MyServiceClsデフォルトのコンストラクターでインスタンスを作成するのではなく、これらを渡す方法はありますか?
Intent私が持っている のためにを作成しServiceています:
_myServiceIntent = new Intent(this, typeof(MyServiceCls));
これは機能しますが、MyServiceCls依存関係があります。MyServiceClsデフォルトのコンストラクターでインスタンスを作成するのではなく、これらを渡す方法はありますか?
サービスにデータを送信する最も簡単な方法はインテントを使用することですが、それはパラメーターがシリアル化/パーセル化されることを意味するため、役に立ちません...
私はそれを行う2つの方法を見ます:
複雑な解決策:リモート メッセンジャーでバインドされたサービスを作成できます。Messageサービスが接続されると、必要な参照ごとに Incominghandler に送信できます。しかし、もう一度考えてみると、オブジェクトがシリアル化され、サービスが別のインスタンスを取得する可能性があると思います...したがって、おそらく単純なソリューションが最適です。
簡単な解決策: IoC (制御の反転) メカニズムを使用しないのはなぜですか? RoboGuice、AndroidAnnotationsまたはDaggerを統合できます。
2.1上記のAPIを統合したくない場合(今はその時ではない)、必要なインスタンスを保持するプロジェクトにシングルトンクラスを作成できますApplication.onCreate()。必要なオブジェクトを作成し、それぞれにゲッターを提供します。そして、サービスで、シングルトン クラスから必要なオブジェクトごとに call get を呼び出します。