我想從Web服務獲取json,顯示進度圈並處理它,然後顯示數據。如何使異步調用沒有jdts和加載循環同步?任何庫或其他任何東西?在顯示進度條時使異步http調用同步?
例如
....some code
call to json webservice //wait for http call to execute while displaying loading circle
update the UI
我想從Web服務獲取json,顯示進度圈並處理它,然後顯示數據。如何使異步調用沒有jdts和加載循環同步?任何庫或其他任何東西?在顯示進度條時使異步http調用同步?
例如
....some code
call to json webservice //wait for http call to execute while displaying loading circle
update the UI
那麼,一個解決方案是使用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();
}
}
我加了一個例子.. –