2014-09-03 1 views
0

Сегодня я пишу программу. Он работает успешно и почти закончен. Но я обнаружил, что когда я закрываю Socket, BufferedReader и PrintWriter, программа всегда показывает ANR.I меня смущает. любая последовательность для закрытия программы?Как успешно оформить программу

@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(); 
      } 

     } 

Это мой вопрос, и я хочу, чтобы устранить эту ошибку, чтобы сохранить свои программы perfect.Thanks

ответ

0

Читать эту Android - how do I investigate an ANR?

А может быть, попробовать что-то вроде этого

@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(); 
+0

Это успех. Большое спасибо. : D –