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();
我正在通过蓝牙服务接收数据并想使用 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();