0

我想在另一个项目中重用一些服务层代码。我确实希望能够更改服务使用的成员变量之一,而无需使用不同的服务代码。我不知道如何做到这一点,因为我没有“创建”服务;清单和系统会这样做。因此我不能在构造函数中传递一些东西。

我很难找到提出这个问题的文字,所以也许一个简单的例子是最好的。我有一项服务,例如:

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(); // 非常适合项目 2,而不适合项目 1!我怎样才能做到这一点并保持相同的代码库?有没有办法通过清单传递参数?谢谢,戴夫

4

0 回答 0