我想在另一个项目中重用一些服务层代码。我确实希望能够更改服务使用的成员变量之一,而无需使用不同的服务代码。我不知道如何做到这一点,因为我没有“创建”服务;清单和系统会这样做。因此我不能在构造函数中传递一些东西。
我很难找到提出这个问题的文字,所以也许一个简单的例子是最好的。我有一项服务,例如:
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!我怎样才能做到这一点并保持相同的代码库?有没有办法通过清单传递参数?谢谢,戴夫