Progress Dialog永远在Activity Resume上旋转

时间:2012-06-12 07:58:43

标签: android android-activity android-dialog android-lifecycle android-progressbar

我使用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被解除之后的下一个实例。

所以我想在后台永远停止这种旋转。

1 个答案:

答案 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;
    }
}