Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Handler.sendMessage()发送的消息在handleMessage()1中没有收到几百次/千次_Java_Android_Android Handler_Android Messaging - Fatal编程技术网

Java 通过Handler.sendMessage()发送的消息在handleMessage()1中没有收到几百次/千次

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

我使用android.os.Handler在不同的对象之间传递消息,它工作了几千次(有时几百次),然后丢失了一条消息。发送成功后,sendMessage()返回true,但从未调用handleMessage()。应用程序继续工作,即使在错过消息后,消息仍保持流动

没有例外或崩溃

  • 我做错什么了吗?任何建议都会有帮助
  • 这是安卓5.1中已知的错误吗?(我试图搜索,但找不到)
我有一个应用程序,其中有5个单例组件使用android处理程序向另一个类“xyz”发送消息。xyz扩展了android.os.Handler并重写了handleMessage()函数。xyz实例化所有5个单例组件,并在xyz构造函数中传递它们“this”(它自己的引用)。然后,组件使用该引用调用sendMessage()

主要活动:

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秒。