2015-04-29 56 views
0

我想從Web服務獲取json,顯示進度圈並處理它,然後顯示數據。如何使異步調用沒有jdts和加載循環同步?任何庫或其他任何東西?在顯示進度條時使異步http調用同步?

例如

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

回答

0

那麼,一個解決方案是使用ProgressDialog,另一個是進度條, 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()還有你的源代碼發送給主線程包括UI的一些東西的東西。因爲它起作用,所以應該在doInBackground()方法中使用publishProgress()。

onPostExecute()這種方法doInBackground後執行完成所有的過程

onPreExecute()這種方法是初始化所有您在的AsyncTask需要

可以申報的東西並在您的Activity的開始實例化您的ProgressDialog,然後設置progressDialog.show() in 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

我加了一個例子.. –