我在我的应用程序中创建了一个独特的线程,用于创建与之通信的RFCOMM套接字。但是,我希望实际的通信能够在服务中完成,因此它可以持久地处理方向变化等愚蠢的事情。
这样的事情:
private class grabSocket extends Thread {
private BluetoothSocket socket = null;
public SocketRetriever(BluetoothDevice device) {
socket = device.createRfcommSocketToServiceRecord(UUID);
}
}
我现在如何将此套接字传递给服务?如果我尝试从线程内部执行此操作,该服务是否会比线程更长,或者它会在线程一旦死亡时立即死亡?
答案 0 :(得分:0)
正如@Submersed所提到的,您可以使用binder将此套接字传递给您的服务。
如果我尝试从线程中执行此操作,该服务是否会比该线程更长,或者它会在线程一旦死亡的情况下发生吗?
如果您启动了某项服务,那么它将一直有效,直到您明确呼叫stopService
或stopSelf
。如果你绑定它,它将工作,直到最后一个客户端解除它。因此,服务的生命周期并不依赖于线程的生命周期。