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 或任何适合您需要的服务。