HandleMessage 传递对象失败

HandleMessage Failed to Pass Object

我正在通过蓝牙服务接收数据并想使用 handleMessage 将其传递给 MainActivity,MainActivity 已收到消息但对象为“null”...有人可以建议吗?提前致谢!

在蓝牙服务中:(变量 data 是一个字符串。) mHandler.obtainMessage(MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L, data).sendToTarget();

在主要活动中: 问题-这里的字符串 data 为空,而我仔细检查了从蓝牙服务发送的 data 不为空。

D/Main Activity: data at handler: null

        mHandler = new Handler() {
        @Override
        public void handleMessage(@NonNull final Message msg) {
            switch ((msg.what)) {                
                case MessageConstants.MESSAGE_ADD_ENTRY_L:
                    try {
                        Log.d(TAG, "handler add entry");
                        Thread dataParseThread = new Thread(new Runnable() {
                            @Override
                            public void run() {
                                String data = (String) msg.obj;
                                Log.d(TAG, "data at handler: " + data);
                                SensorData.parseDataL(data))
                                exportData.logEntryL();                                  
                            }
                        });
                        dataParseThread.start();
                    } catch (Exception e) {
                        Log.d(TAG, "handler went wrong: " + e);
                    }
                    break;
            }
        }
    };

在使用 sendToTarget() 时,请确保您的目标指向您的 mHandler,如

Message message = new Message();
message.what = MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L;
message.setData(data);
message.setTarget(mHandler);
message.sendToTarget();

更新

您仍然可以使用现有方法将 data 设为 Object,但在某些时候您需要将 Target 设置为 Message,以便它可以 post

Message message = mHandler.obtainMessage(MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L, data);
message.setTarget(mHandler);
message.sendToTarget();