当前位置: 代码迷 >> java >> 从非UI线程启动服务(蓝牙)
  详细解决方案

从非UI线程启动服务(蓝牙)

热度:63   发布时间:2023-07-27 09:29:55.0

我已经在我的应用程序中创建了一个独特的线程,目的是创建一个与之通信的RFCOMM套接字。 但是,我希望在服务中进行实际的通信,以便它可以在诸如方向更改之类的愚蠢事情中持续存在。

像这样:

private class grabSocket extends Thread {
  private BluetoothSocket socket = null;
  public SocketRetriever(BluetoothDevice device) {
    socket = device.createRfcommSocketToServiceRecord(UUID);
  }
}

现在如何将该套接字传递给服务? 如果我尝试从线程内部执行此操作,那么服务将使该线程失效,还是仅在线程运行后就死掉?

如@Submersed所述,您可以使用活页夹将此套接字传递给您的服务。

如果我尝试从线程内部执行此操作,那么服务将使该线程失效,还是仅在线程运行后就死掉?

如果启动服务,则该服务将一直起作用,直到您明确调用stopServicestopSelf 如果您绑定到它,它将一直工作到最后一个客户端解除绑定为止。 因此,服务的生命周期不取决于线程的生命周期。

  相关解决方案