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

时间:2015-07-16 17:44:43

标签: java android multithreading sockets bluetooth

我在我的应用程序中创建了一个独特的线程,用于创建与之通信的RFCOMM套接字。但是,我希望实际的通信能够在服务中完成,因此它可以持久地处理方向变化等愚蠢的事情。

这样的事情:

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

我现在如何将此套接字传递给服务?如果我尝试从线程内部执行此操作,该服务是否会比线程更长,或者它会在线程一旦死亡时立即死亡?

1 个答案:

答案 0 :(得分:0)

正如@Submersed所提到的,您可以使用binder将此套接字传递给您的服务。

  

如果我尝试从线程中执行此操作,该服务是否会比该线程更长,或者它会在线程一旦死亡的情况下发生吗?

如果您启动了某项服务,那么它将一直有效,直到您明确呼叫stopServicestopSelf。如果你绑定它,它将工作,直到最后一个客户端解除它。因此,服务的生命周期并不依赖于线程的生命周期。

相关问题