Android:试图显示HttpClient向服务器发送消息时发送的文本

时间:2012-12-08 18:48:59

标签: android

我有一个简单的程序,提出问题,然后调用一个php文件,说明答案是肯定还是否定。

现在它可以正常工作,但在发送信息时会有轻微的暂停。我想要一些消息或指示器显示计算机正忙。

现在,当我发送textvue的文本时,在发送数据之前,textView没有改变,我也尝试将其称为更新版本

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;
       }

1 个答案:

答案 0 :(得分:0)

使用AsyncTask以避免在向服务器发送数据时挂起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("");
      }

}