当 activity 处于后台时,在 AsyncTask.onPostExecute 上显示 DialogFragment;

Show DialogFragment on AsyncTask.onPostExecute when activity is in background;

我在 Activity 进入后台后尝试显示对话框时收到 java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState,我需要向用户显示此消息,是否有任何方法可以在 activity 恢复。我的代码是这样的:

public class MyTask extends AsyncTask<String,String,String>{

    ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

    @Override
    protected void onPreExecute() {
        progressDialog.setMessage(getString(R.string.dialog_progress_message));
        progressDialog.setCancelable(false);
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        // HTTP POST user action
        // App goes to background (user press home button i.e.)
        // Getting message from server
        return message;
    }

    @Override
    protected void onPostExecute(String message) {
        progressDialog.dismiss();

        DialogAlert dialogAlert = DialogAlert.newInstance(message);
        dialogAlert.setCancelable(false);
        //App crash here
        dialogAlert.show(getSupportFragmentManager(), TAG);

    }
}

我已经尝试使用 AsyncTaskLoader,但是当 activity 恢复时对话框没有出现。任何想法。

试试下面的代码片段,

替换

dialogAlert.show(getSupportFragmentManager(), TAG);

getSupportFragmentManager().beginTransaction().add(dialogAlert, "tag")
                           .commitAllowingStateLoss();