Как отобразить индикатор выполнения при соединении с сервером в Android? - PullRequest
0 голосов
/ 22 марта 2012

Вот мой метод подключения к серверу и получения ответа в MyUtilitiesActivity.

 private static response = "";
public static String send(final Activity act, final String url, final String keys[], final String values[]) 
{ 
    try{
        HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.

        HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
        // Set the default socket timeout (SO_TIMEOUT) 
        // in milliseconds which is the timeout for waiting for data.

        HttpConnectionParams.setSoTimeout(httpParameters, 5000);  

        HttpClient httpclient = new DefaultHttpClient(httpParameters);
        if(keys == null && values == null)
        {

            HttpGet get = new HttpGet(url);   
            // Execute HTTP Get Request 
            response = httpclient.execute(get, new BasicResponseHandler()).trim();  

        }
        else if(keys != null && values != null && keys.length == values.length)
        {
            // Add your data   
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

            for (int i = 0; i < values.length; i++)
            {
                nameValuePairs.add(new BasicNameValuePair(keys[i], values[i])); 
            }

            HttpPost post = new HttpPost(url);
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            response = httpclient.execute(post, new BasicResponseHandler()).trim();  

        } 

    }
    catch (Exception e) 
    {
        response = e + "";
        e.printStackTrace();
    }
    return response ;  

}

И я вызываю вышеуказанный метод по нажатию кнопки в MyTestActivity.

public onClick(View v)
{
String response =  MyUtilitiesActivity.send(MyTestActivity.this,    "http://www.google.com", null, null);

 //the code to be execute after getting the response from server
 }

Где отобразить индикатор выполнения?Внутри щелчка кнопки или внутри метода send ()?Как это отобразить?Пожалуйста, помогите мне.

Ответы [ 2 ]

7 голосов
/ 22 марта 2012

Использование AsyncTask концепция, известная как Потоки безболезненно в Android.

  1. Поместите ваш метод send () в Async doInBackGround()
  2. Начать диалог прогресса в onPreExecute
  3. и уволить onPostExecute().
0 голосов
/ 22 марта 2012

Вы можете добавить индикатор выполнения следующим образом:

ProgressDialog dialog = ProgressDialog.show(YourActivity.this, "", 
                                    getString(R.string.Loading), true);

и когда ваша долгая операция закончится, вы должны позвонить dialog.dismiss();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...