我正在开发一个需要访问网站的应用程序
数据,并在设备上显示该数据.我想从中获取数据
Internet在后台显示,并在其上显示ProgressDialog或ProgressBar
设备以及应用程序何时从服务器应用程序收到响应
关闭对话框或栏,将显示数据.
为此,我正在使用AsyncTask-
AsyncTask的代码如下-
ServerTask extends AsyncTask {
@Override
protected void onPreExecute() {
dialogAccessingServer = new ProgressDialog(ctx);
dialogAccessingServer.setMessage(shownOnProgressDialog);
dialogAccessingSpurstone.show();
}
@Override
protected ServerResponse doInBackground(String... urlArray) {
String urlString = urlArray[0];
HttpResponse serverResponSEObject = null;
//finding HttpResponse
return serverResponSEObject;
}//end of doInBackground
@Override
protected void onPostExecute(HttpResponse serverResponSEObject){
dialogAccessingSpurstone.dismiss();
}
}
ServerTask serverTaskObject = new ServerTask();
serverTaskObject.execute();
HttpResponse response = serverTaskObject.get();
//根据响应执行操作
但没有显示ProgressDialog.(我想原因是
线程不完整,并且仅当线程具有
完成).
我的问题-
1-如果我的猜测是正确的?如果是,那我应该如何实施呢?
2-如果还有其他更好的方法可以做到这一点?
谢谢
最佳答案
以下是在后台执行任务时显示ProgressDialog的模板代码:
class GetTask extends AsyncTask<Object,Void,String>
{
Context mContext;
ProgressDialog mDialog = null;
GetPhotoFeedTask(Context context)
{
mContext = context;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
mDialog = new ProgressDialog(mContext);
mDialog.setMessage("Please wait...");
mDialog.show();
}
@Override
protected String doInBackground(Object... params)
{
// do stuff in background : fetch response
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
setProgressBarIndeterminateVisibility(false);
// mDialog.dismiss();
}
}
然后使用新的GetTask(this).execute()语句从活动中调用它;
注意:请注意,如果用户切换方向或导致随后发生的事件,则在显示ProgressDialog时,代码可能会中断.在这种情况下,建议使用托管对话框.