Java 如何成功退出该计划

Java 如何成功退出该计划,java,android,sockets,bufferedreader,printwriter,Java,Android,Sockets,Bufferedreader,Printwriter,今天我写了一个程序。它工作成功,几乎完成了。但是我发现当我关闭套接字,缓冲阅读器和打印编辑器,程序总是显示ANR。我对此感到困惑。是否有关闭程序的顺序 @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub try { mPrintWriter.print

今天我写了一个程序。它工作成功,几乎完成了。但是我发现当我关闭
套接字
缓冲阅读器
打印编辑器
,程序总是显示ANR。我对此感到困惑。是否有关闭程序的顺序

@Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            try {
                mPrintWriter.println("192.168.2.131;"+mSocket.getLocalAddress().toString().replace("/", "")+";byebye");
                mPrintWriter.close();
                mBufferedReader.close();
                mSocket.close();
                net_.interrupt(); //This is the thread to send and receive data.
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
这是我的问题,我想消除这个bug以保持程序的完美。谢谢阅读

也许可以试试这样的

    @Override
    public void onClick(DialogInterface dialog, int which) {

      thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                mPrintWriter.println("192.168.2.131;"+mSocket.getLocalAddress().toString().replace("/", "")+";byebye");
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                mPrintWriter.close();
                mBufferedReader.close();
            }

            try{
                net_.interrupt();
            }catch (IOException e) {
                 e.printStackTrace();
            }finally{
                mSocket.close();
            }
        }
     });

     thread .start();
    }
在你的应用程序结束时,你应该加入该线程

   thread.join();

它成功了。非常感谢D