在AsyncTask中将活动移到前面

时间:2014-07-31 05:23:41

标签: java android android-asynctask

在一项活动中,我在隐藏活动后创建了一个AsyncTask:

this.moveTaskToBack(true);
(new MyTask(this)).execute();

要在任务中显示对话框(在onPostExcecute中),我想将活动置于最前面:

alertDialog.show();

Intent intent = new Intent(mainActivity, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mainActivity.getBaseContext().startActivity(intent);

但是主要活动的新实例已创建并显示在对话框的顶部,尽管应用程序仍在运行(该活动还有一个对话框样式Theme.Dialog)。我该如何解决这个问题?

编辑:根据javadoc,此代码始终会重新创建活动,并且不会将其先前的实例置于前面,因为startActivity是从活动上下文外部调用的。

1 个答案:

答案 0 :(得分:0)

如何向该意图添加新信息,并将其捕获到onCreate()

我的意思是这样的:

public class MainActivity extends Activity {

    public static final String WANT_DIALOG_EXTRA = "WANT_DIALOG_EXTRA";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getIntent().hasExtra(WANT_DIALOG_EXTRA)) {
            // create and show dialog
        }
    }

}

然后在创建意图时,再添加一行,如下所示:

intent.putExtra(MainActivity.WANT_DIALOG_EXTRA, true);