我使用Handler调用WebServices并在
的帮助下显示ProgressBar// Create Progress dialogs
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case mDialogProgress:
dataLoadProgress = new ProgressDialog(this);
dataLoadProgress.setMessage("Loading...");
dataLoadProgress.setIndeterminate(true);
dataLoadProgress.setCancelable(false);
dataLoadProgress
.setProgressStyle(android.R.attr.progressBarStyleSmallTitle);
return dataLoadProgress;
default:
return null;
}
}
我已经调用了下面的方法onStop来停止它的显示。
@Override
public void onStop() {
if (dataLoadProgress != null && dataLoadProgress.isShowing())
stopThread();
super.onStop();
}
private synchronized void stopThread() {
try {
if (getServerData != null) {
if (dataLoadProgress != null && dataLoadProgress.isShowing())
dismissDialog(mDialogProgress);
getServerData = null;
// // mHandler = null;
}
} catch (Exception e) {
CommonFunctions.DoCatchOperation(e);
}
}
现在当我的应用程序转到后台模式并恢复时,它会显示progressdialog并且它会永远旋转,我无法使用后退按钮停止它,因为它的 setCancelable(false);
我尝试在 onResume()中调用我的 stopThread(),如果显示进度,那么它将停止,但我在onCreate中调用webservice并且它开始显示ProgressDialog,并在onCreate onResume正在调用并且我的ProgressDialog被解除之后的下一个实例。
所以我想在后台永远停止这种旋转。
答案 0 :(得分:2)
我在这里只添加了一行条件 if(dataLoadProgress == null),它对我有用。
// Create Progress dialogs
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case mDialogProgress:
if(dataLoadProgress == null)
dataLoadProgress = new ProgressDialog(this);
dataLoadProgress.setMessage("Loading...");
dataLoadProgress.setIndeterminate(true);
dataLoadProgress.setCancelable(false);
dataLoadProgress
.setProgressStyle(android.R.attr.progressBarStyleSmallTitle);
return dataLoadProgress;
default:
return null;
}
}