0

Я хочу получить json из веб-сервиса, отображая круг выполнения и обрабатывая его, а затем отображая данные. как сделать асинхронные вызовы синхронными без jdts и с кругом загрузки? Любая библиотека или что-то еще?Сделать асинхронные HTTP-вызовы синхронными при отображении индикатора выполнения?

Например

....some code 
call to json webservice //wait for http call to execute while displaying loading circle 
update the UI 

ответ

0

Ну, одно решение использует ProgressDialog, другой ProgressBar, ProgressDialog отправить диалог с этим прогресс круга.

для ProgressDialog вы должны знать:

progressDialog = new ProgressDialog(MainActivity.this); 
progressDialog.setTitle("Downloading JSON ..."); 
progressDialog.setMessage("Download in progress ..."); 
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);//horizontal 
progressDialog.setProgressStyle(progressDialog.STYLE_SPINNER); //Circular 
progressDialog.setProgress(0); 
progressDialog.setMax(20); // the progress has 20 steps 
progressDialog.setIndeterminate(true);// infinite loop in the progress 
progressDialog.show(); 

для AsyncTask вы должны знать:

doInBackground() есть исходный код для асинхронного процесса.

onProgressUpdate() есть исходный код для отправки некоторых частей в основной поток, включая пользовательские интерфейсы. поскольку он работает, вы должны использовать publishProgress() внутри doInBackground().

onPostExecute() этот метод будет выполняться после того, как doInBackground закончить весь процесс

onPreExecute() этот метод для инициализации все то, что вам нужно в вашем AsyncTask

Вы можете объявить и создайте экземпляр ProgressDialog в начале своей деятельности, затем установите progressDialog.show() в AsyncTask внутри onPreExecute()

private class JsonWebService extends AsyncTask<URL, Integer, JSONObject> { 
    protected void onPreExecute(){ 
     progressDialog.show(); 
    } 
    protected JSONObject doInBackground(URL... urls) { 
     //here all your code for download your JSON 
     // 
     //publishProgress(counter); 

     return json; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
     setProgressPercent(progress[0]); 
    } 

    protected void onPostExecute(JSONObject result) { 
     //use your JSON as you want your download is finished 
     // close your progressdialog 
     progressDialog.dismiss(); 
    } 
} 
+0

Я добавил пример .. –