2014-04-12 29 views
0

我使用套接字服務器和客戶端發送圖像。它給我對話「應用程序沒有響應」,我認爲轉換這個位圖是在UiThread。所以我試圖改變它,但我仍然得到這個消息「應用程序沒有響應」。這是發生在我發送大的圖像+ 500kb。傳輸數據時應用程序未響應

這裏是我的服務器代碼:

public class SocketServerThread extends Thread { 

     static final int SocketServerPORT = 8080; 
     int count = 0; 

     @Override 
     public void run() { 
     try { 
     serverSocket = new ServerSocket(SocketServerPORT);    
     while (true) { 
     Socket socket = serverSocket.accept(); 
     count++; 

     // Here where i am doing my code i think is not doing in UiThread.. 

     MainActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() 
      {     
      // Firstly i was doing my code here... 
      } 
     }); 

     } 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     } 

    } 

我的客戶端代碼:

public class MyClientTask extends AsyncTask<Void, Void, Void> { 

     MyClientTask(String addr, int port){ 
     dstAddress = addr; 
     dstPort = port; 
     } 

    @Override 
    protected Void doInBackground(Void... arg0) { 

      Socket socket = null; 

      try 
         { 
    //I am sending my image here... 

      } 
     } 
      } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response = "UnknownHostException: " + e.toString(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response = "IOException: " + e.toString(); 
      }finally{ 
      if(socket != null){ 
      try { 
       socket.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      } 
      } 
      return null; 
      } 
      @Override 
      protected void onPostExecute(Void result) 
      { 
      super.onPostExecute(result); 
      } 
    } 

所以,請幫助我。爲什麼我仍然沒有迴應對話?

+0

發佈您的logcat。 –

回答

0

當您阻止UI線程超過5秒時,ANR錯誤代碼就會發生。如果你需要做後臺工作,請不要使用主線程。在單獨的線程中接收數據並將結果發送到UI線程。

+0

嗯所以我現在正在做的是我正在做我的工作在第二線程但我的UiThread被封鎖。所以我需要有第二個線程和UiThread在同一時間工作是嗎? – user3465277

+0

而我沒有undertsand如何阻止我的UiThread – user3465277

+0

隨着代碼發佈,我不能說問題到底在哪裏,我只能給你一個關於它的提示。也許更多的代碼可見性,我們可以給你一個最好的答案。 – greywolf82

相關問題