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