【问题标题】:Run Service twice运行服务两次
【发布时间】:2014-03-14 13:21:49
【问题描述】:

快速提问:

我提供了一项服务来监控 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);
}

显然,只有我启动该服务的第二个阅读器才能读取标签。

亲切的问候

努丹

【问题讨论】:

    标签: java android android-service


    【解决方案1】:

    不,您不能启动服务的第二个实例。您应该修改您的服务以支持使用线程的多个 RFID 阅读器。将startService 发送到已在运行的服务只会传递新的Intent

    【讨论】:

    • 耶,我担心会是这样。感谢您的澄清。
    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 2014-10-19
    • 2017-02-16
    • 2023-03-24
    • 2023-02-25
    • 1970-01-01
    相关资源
    最近更新 更多