0

別のプロジェクトで一部のサービス レイヤー コードを再利用したいと考えています。サービス コードを変更せずに、サービスが使用するメンバー変数の 1 つを変更できるようにしたいと考えています。サービスを「作成」していないため、これを行う方法がわかりません。マニフェストとシステムがそれを行います。したがって、コンストラクターで何かを渡すことはできません。

この質問をするための言葉を見つけるのに苦労しているので、簡単な例を挙げたほうがよいでしょう。次のようなサービスがあります。

public class MyService extends Service implements MyCommunicatorListener {

ICommunicator _comm = new BlueToothCommunicator(); // great for project 1, not for project 2!

public void shutUpCommunicator()  // example of using communicator
{
    _comm.Shutup();
}

// MyCommunicatorListener methods
@Override
public void onPageReceived(Page page) {  // example of listening to communicator
    Log.d(TAG,"onPageReceived");

}
}  // class greatly simplified...

すべてうまくいきます。マニフェストで宣言されているという事実のおかげで、サービスが開始されました。

 <service android:name="com.acme.servicelayer.MyService" android:process=":remote" >
        <intent-filter>
            <action android:name="com.acme.servicelayer.MyService" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </service>

このサービス コードを保持し、別のプロジェクトで再利用したいと考えています。他のプロジェクトでは、使用したくありません:

ICommunicator _comm = new BlueToothCommunicator(); // great for project 1, not for project 2!

使用したい: ICommunicator _comm = new WiFiCommunicator(); // プロジェクト 1 ではなく、プロジェクト 2 に最適です! これを行い、同じコード ベースを維持するにはどうすればよいですか? マニフェストを介して引数を渡す方法はありますか? ありがとう、デイブ

4

0 に答える 0