我在主要活动中打开Bluetooth套接字,并从其他设备接收信息。
[如下图所示,我的活动有两个片段。
我如何使用两个片段中从套接字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);
}
};
您可以使用脱机数据库,例如Room。 (不要忘记在后台线程中执行查询。请使用执行程序和线程池)。除此之外,还可以使用intent在某些片段之间传输数据。最后,我认为在片段(或通常是模块)之间共享数据的最佳方法是使用具有共享存储库(如MVVM,MVC等)的体系结构。它们都使用脱机数据库作为存储库。