Java 如何停止运行处理程序的线程?
我在服务中有一个线程,它侦听处理程序的指令,并将byte[]命令写入蓝牙流:Java 如何停止运行处理程序的线程?,java,android,multithreading,handler,Java,Android,Multithreading,Handler,我在服务中有一个线程,它侦听处理程序的指令,并将byte[]命令写入蓝牙流: class BToutgoingThread extends Thread { private static final String INNER_TAG = "BToutgoingThread"; public void run() { Log.e("Service: BToutgoingThread","Starting"); this.setName(
class BToutgoingThread extends Thread
{
private static final String INNER_TAG = "BToutgoingThread";
public void run()
{
Log.e("Service: BToutgoingThread","Starting");
this.setName(INNER_TAG);
Looper.prepare();
mMyServiceHandler = new Handler()
{
public void handleMessage(Message msg)
{
// handle messages...
switch(msg.what)
{
case 1: // some message
write(reset);
break;
case 2: // some other message
write(motReset);
break;
}
}
};
Log.e("outgoing thread","active");
if(stopOutgoing){ // this is set true in Service onDestroy()
Log.e("Service: BToutgoingThread","TERMINATED");
for(int i = 0; i < 15; i++){
mMyServiceHandler.removeMessages(i); // remove messages
}
mMyServiceHandler.getLooper().quit(); // end the looper
return;
}
Looper.loop();
}
public void write(byte[] bytes) {
try {
for (int i = 0; i < 20; i++) // 20 rounds, rapid, FIRE!
{
mmOutStream.write(bytes); // bang
}
} catch (IOException e) { }
}
}
在我尝试停止线程之前,它工作得很好。我将stopOutgoing设置为true,但这不起任何作用。我试着把它放回原处;作为由处理程序执行的命令,但这同样是无用的
我也不明白为什么活套似乎没有循环。我应该滥发LogCat并创建无限的新处理程序,但这不会发生
我很想理解为什么活套是这样工作的,但在这一点上,我愿意接受一种只结束线程的技术。任何帮助都将不胜感激 用HandlerThread来代替那些繁重的手工工作…@pshink我应该如何在我当前的代码结构中实现HandlerThread?你没有实现HandlerThread,它是一个随时可用的类OK,我来试试。