Java 如何停止运行处理程序的线程?

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(

我在服务中有一个线程,它侦听处理程序的指令,并将byte[]命令写入蓝牙流:

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,我来试试。