快速提问:
我提供了一项监控RFID阅读器的服务,如果它读取的东西它会过滤ID n的东西,这是有效的。
现在我的主板上有2位读者,我需要听取两位读者的意见。
我认为最好的方法是为我使用的每个读者提供服务,因为将来可能会有更多的读者。但是关于startService(intent);
:
“如果此服务尚未运行,它将被实例化并启动(如果需要,为其创建一个进程);如果它正在运行,则它仍然在运行。”
所以发生的事情是第二次我尝试启动服务时它只是将现有的一个更改为我调用它的第二个端口。
有没有办法启动服务两次,还是我必须提出别的东西?
以下是我启动服务的方式:
private static final String devicePathIn = "/dev/ttyUSB1";
private static final String devicePathOut = "/dev/ttyUSB0";
在MainActivity中的onCeate:
startServiceOnPort(devicePathOut);
startServiceOnPort(devicePathIn);
方法startServiceOnPort:
private void startServiceOnPort(String port){
Intent intent = new Intent(this, RFIDService.class);
intent.putExtra("port", port);
startService(intent);
}
显然,只有我启动服务的第二个阅读器才能读取标签。
亲切的问候
Noudan
答案 0 :(得分:2)
不,您无法启动服务的第二个实例。您应修改服务以使用线程支持多个RFID阅读器。向正在运行的服务发送startService
只会传递新的Intent
。