2012-12-08 3 views
0

간단한 프로그램으로 질문을하고 그 대답이 예 또는 아니 었으면 PHP 파일을 호출합니다.Android : HttpClient가 서버에 메시지를 보낼 때 보내는 텍스트를 보여 주려고합니다.

지금은 작동하지만 정보를 보내면 약간의 일시 중지가 있습니다. 어떤 종류의 메시지 나 표시기가 컴퓨터가 사용 중임을 보여 주려고합니다. 나는 textvue의 텍스트를 chnage 때 데이터를 전송하기 전에

지금의 텍스트 뷰가 변경되지 않습니다, 나는 allso가 전화를 시도했다가

코드

case R.id.butYes: 
       mSend .setText("Sending your vote to server"); 
       mSend.invalidate(); 
       TalkToServer(mYes[mPes-1]); 
       UpdateScreen(); 
       mSend .setText(""); 
       break; 

     String TalkToServer(String addr) 
     { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(addr); 

      HttpResponse response; 
      String responseBody=new String(""); 
      try { 
       response = httpclient.execute(httppost); 



responseBody = EntityUtils.toString(response.getEntity()); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      return responseBody; 
     } 

답변

0

사용 AsyncTask 방지하기 methed 업데이 트입니다 서버에 데이터를 보낼 때 UI가 멈추는 것처럼 코드를 변경하면

case R.id.butYes: 
    new SendTextOperation().execute(""); 
    break; 

private class SendTextOperation extends AsyncTask<String, Void, String> { 

     @Override 
     protected void onPreExecute() { 

     //Update UI here 
     mSend.setText("Sending your vote to server"); 
     mSend.invalidate(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      // Talk to server here to avoid Ui hanging 
      TalkToServer(mYes[mPes-1]); 
      return null; 
     }  

     @Override 
     protected void onPostExecute(String result) { 
      // Update screen here after talk to server end 
       UpdateScreen(); 
       mSend .setText(""); 
     } 

} 
관련 문제