Android 处理消息isn';我不总是打电话

Android 处理消息isn';我不总是打电话,android,usb,android-handler,Android,Usb,Android Handler,我有一个问题,似乎持续了大约70%的时间-我的USB线程的处理程序是不是在一个活套调用 我有 发生此问题时,不会调用任何日志,并且此线程上也会接收消息(可能是问题?)this.start(),我调用constrolSender.getLooper().quit()只要断开连接。一个线程在Java中只能启动一次,并且没有时间保证它实际启动的时间。如果您试图在线程开始循环之前向其发布消息,那么该消息将被丢弃。在您需要发布消息之前,请尝试启动您的线程,以确保它按时启动。线程问题!你确定你的处理程序在被

我有一个问题,似乎持续了大约70%的时间-我的USB线程的处理程序是不是在一个活套调用

我有


发生此问题时,不会调用任何日志,并且此线程上也会接收消息(可能是问题?)<代码>this.start(),我调用
constrolSender.getLooper().quit()只要断开连接。

一个线程在Java中只能启动一次,并且没有时间保证它实际启动的时间。如果您试图在线程开始循环之前向其发布消息,那么该消息将被丢弃。在您需要发布消息之前,请尝试启动您的线程,以确保它按时启动。

线程问题!你确定你的处理程序在被处理程序调用之前已经完全初始化了吗?我如何判断它是否已经完全初始化?当它完全初始化时,让它在日志中说它已经准备好了!“只能启动一次”是指我不能多次调用此.start()以产生与第一次相同的效果吗?正确。更多信息:
//Sends messages to usb accessory
Looper.prepare();
controlSender = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        try{
            Log.d("USB Thread", "Writing out to USB filestream");
            output.write((byte[])msg.obj);
        }catch(final Exception e){
            Log.d("USB Thread", "Writing to USB filestream failed");
            e.printStackTrace();
            UIHandler.post(new Runnable() {
                @Override
                public void run() {
                    onNotify("USB Send Failed " + e.toString() + "\n");
                }
            });
        }
    }
};
Looper.loop();