1

ハンドラーを使用して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でWebサービスを呼び出すと、ProgressDialogが表示され始め、次のインスタンスでonCreate onResumeが呼び出され、ProgressDialogが却下されました。

だから私はこのスピンをバックグラウンドで永遠に止めたいのです。

4

1 に答える 1

2

ここに条件を 1 行だけ追加しました。
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;
    }
}
于 2012-11-06T06:45:00.480 に答える