Java 通过Handler.sendMessage()发送的消息在handleMessage()1中没有收到几百次/千次
操作系统版本:安卓5.1 我使用android.os.Handler在不同的对象之间传递消息,它工作了几千次(有时几百次),然后丢失了一条消息。发送成功后,sendMessage()返回true,但从未调用handleMessage()。应用程序继续工作,即使在错过消息后,消息仍保持流动 没有例外或崩溃Java 通过Handler.sendMessage()发送的消息在handleMessage()1中没有收到几百次/千次,java,android,android-handler,android-messaging,Java,Android,Android Handler,Android Messaging,操作系统版本:安卓5.1 我使用android.os.Handler在不同的对象之间传递消息,它工作了几千次(有时几百次),然后丢失了一条消息。发送成功后,sendMessage()返回true,但从未调用handleMessage()。应用程序继续工作,即使在错过消息后,消息仍保持流动 没有例外或崩溃 我做错什么了吗?任何建议都会有帮助 这是安卓5.1中已知的错误吗?(我试图搜索,但找不到) 我有一个应用程序,其中有5个单例组件使用android处理程序向另一个类“xyz”发送消息。xyz
- 我做错什么了吗?任何建议都会有帮助
- 这是安卓5.1中已知的错误吗?(我试图搜索,但找不到)
onCreate() {
mController = Controller.getInstance ();
}
控制器:
Controller() {
/* Following is the USB Manager. */
mUsbHandlerThread = new HandlerThread("USBManagerHandler", Thread.NORM_PRIORITY);
mUsbManagerHandlerThread.start();
mUSBManager = USBManager.getInstance(mUsbManagerHandlerThread.getLooper());
/* Following are the components which send messages to USB Manager. */
mBmsComponentHandlerThread = new HandlerThread("BMSComponentManagerHandler", Thread.NORM_PRIORITY);
mBmsComponentHandlerThread.start();
mBmsComponent = BMSComponent.getInstance(mBmsComponentHandlerThread.getLooper());
mBmsComponent.setUSBManagerHanlder(mUSBManager)
/* There are 4 other components initialized the same way. */
}
BMS_组件:
public class BMSComponent extends UVComponent {
public Handler usbHandler;
private BMSComponent (Looper looper) {
super(looper);
}
public setUSBHandler(USBComponent usbHandler) {
this.usbHandler = usbHandler;
}
public postToUSBManager(Message message) {
this.usbHandler.sendMessage(message);
}
}
class UVComponent extends Handler {
UVComponent(Looper looper) {
super(looper);
}
}
美国海军管理人员:
public class USBManager extends UVComponent {
public Handler usbHandler;
private USBManager (Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
/* process the message here, and call the response handler which there in the msg object. */
}
}
紫外线成分:
public class BMSComponent extends UVComponent {
public Handler usbHandler;
private BMSComponent (Looper looper) {
super(looper);
}
public setUSBHandler(USBComponent usbHandler) {
this.usbHandler = usbHandler;
}
public postToUSBManager(Message message) {
this.usbHandler.sendMessage(message);
}
}
class UVComponent extends Handler {
UVComponent(Looper looper) {
super(looper);
}
}
我不能仅凭描述就知道出了什么问题。如果你发布代码,我们可以检查it@nandsito整个代码太大了。我已经删除了代码中不相关的部分,但在主要问题中添加了与处理程序相关的代码。谢谢你的帮助!
USBManager
class实际上是代码片段中显示的吗?USBManager类处理通过USB连接的附件。它具有与附件通信的发送和接收线程。它具有modbus实现,可通过串行连接进行通信。但是对于处理传入消息,只有这个1 handleMessage方法,它从组件和接收方线程获取消息。该代码在丢失一条消息之前运行了100秒。