ScanCallback 中的后台线程
Background thread in ScanCallback
我正在编写一个包含处理蓝牙设备发现服务的应用程序。我发现的设备在 ScanCallback 方法中接收。我想确保 ScanCallback 内部发生的所有事情都在后台线程中处理,而不是在主线程中处理。我的问题是,在我的实现中,每个回调都会创建一个单独的线程。我想知道这是否可以,如果不能,我如何重用同一个线程来处理所有回调。这是我的代码。
@TargetApi(21)
private ScanCallback GetMScanCallbackForApi21AndAbove() {
return new ScanCallback() {
@Override
public void onScanResult(int callbackType,final ScanResult result) {
new Thread(new Runnable() {
@Override
public void run() {
sendBtDevice(result.getDevice());
}
}).start();
}
@Override
public void onScanFailed(final int errorCode) {
new Thread(new Runnable() {
@Override
public void run() {
//Do something else
}
}).start();
};
}
你可以做的是使用ExecutorService
您可以享受不同类型的服务,单一的 thread/pooling 或任何适合您需要的服务。
我正在编写一个包含处理蓝牙设备发现服务的应用程序。我发现的设备在 ScanCallback 方法中接收。我想确保 ScanCallback 内部发生的所有事情都在后台线程中处理,而不是在主线程中处理。我的问题是,在我的实现中,每个回调都会创建一个单独的线程。我想知道这是否可以,如果不能,我如何重用同一个线程来处理所有回调。这是我的代码。
@TargetApi(21)
private ScanCallback GetMScanCallbackForApi21AndAbove() {
return new ScanCallback() {
@Override
public void onScanResult(int callbackType,final ScanResult result) {
new Thread(new Runnable() {
@Override
public void run() {
sendBtDevice(result.getDevice());
}
}).start();
}
@Override
public void onScanFailed(final int errorCode) {
new Thread(new Runnable() {
@Override
public void run() {
//Do something else
}
}).start();
};
}
你可以做的是使用ExecutorService
您可以享受不同类型的服务,单一的 thread/pooling 或任何适合您需要的服务。