如何共享从套接字接收的数据片段?

问题描述 投票:0回答:1

我在主要活动中打开Bluetooth套接字,并从其他设备接收信息。

[如下图所示,我的活动有两个片段。

enter image description here

我如何使用两个片段中从套接字Bluetooth接收的信息。注意:片段可能会更改,通常我会寻找共享接收数据的正确方法。我通过处理程序接收数据,如下所示:

private final Handler handler = new Handler() {
    @Override
    public void handleMessage(@NonNull Message msg) {
        switch (msg.what) {
            case BluetoothChatService.MessageConstants.MESSAGE_WRITE:
                byte[] writeBuf = (byte[]) msg.obj;
                String writeMessage = new String(writeBuf);
                break;
            case BluetoothChatService.MessageConstants.MESSAGE_READ:
                byte[] readBuf = (byte[]) msg.obj;
                String readMessage = new String(readBuf, 0, msg.arg1);
                break;
            case BluetoothChatService.MessageConstants.MESSAGE_DEVICE_NAME:
                connectedDeviceName = msg.getData().getString(BluetoothChatService.MessageConstants.DEVICE_NAME);
                Toast.makeText(getApplicationContext(), "Connected to "
                        + connectedDeviceName, Toast.LENGTH_SHORT).show();
                break;
            case BluetoothChatService.MessageConstants.MESSAGE_TOAST:
                Toast.makeText(getApplicationContext(),
                        msg.getData().getString(BluetoothChatService.MessageConstants.TOAST),
                        Toast.LENGTH_SHORT).show();
                break;
        }
        super.handleMessage(msg);
    }
};
java android android-livedata
1个回答
0
投票

您可以使用脱机数据库,例如Room。 (不要忘记在后台线程中执行查询。请使用执行程序和线程池)。除此之外,还可以使用intent在某些片段之间传输数据。最后,我认为在片段(或通常是模块)之间共享数据的最佳方法是使用具有共享存储库(如MVVM,MVC等)的体系结构。它们都使用脱机数据库作为存储库。

© www.soinside.com 2019 - 2024. All rights reserved.