HandleMessage Failed to Pass Object



我正在通过蓝牙服务接收数据,并希望通过handleMessage将其传递给MainActivity, MainActivity已收到消息,但对象为' ' null ' '…有人能给点建议吗?提前感谢!

在Bluetooth Service中:(变量data是一个String。)mHandler.obtainMessage(MainActivity.MessageConstants.MESSAGE_ADD_ENTRY_L, data).sendToTarget();

在MainActivity:问题-字符串数据这里是null,而我已经仔细检查了从蓝牙服务发送的数据不是null。

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,以便它可以发布

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

最新更新