Android - 关闭所有活动(FLAG_ACTIVITY_CLEAR_TOP / clearTaskOnLaunch没有帮助)

时间:2011-05-08 18:28:16

标签: java android android-activity

我的应用程序中有“MainMenuActivity”,我想从中注销。按下后退按钮后,此活动应该启动“注销活动”,这会执行一些注销,然后完成应用程序。

来自MainMenuActivity的调用onBackPressed()的方法:

    public static void logoutAction(final AbstractActivity activity) {
        Builder dialog = new AlertDialog.Builder(activity);
        dialog.setPositiveButton(R.string.dialog_btn_yes, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Intent i = new Intent();
        i.setClass(activity, iess.student.login.LogoutActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            activity.startActivity(i);
            activity.finish();
        }
    });
    dialog.show();
}

然后,“LogoutActivity”执行AsyncTask,它在工作结束时在LogoutActivity上调用finish()

我的问题是,如果在MainMenuActivity之前启动了其他活动,即A - > B - > MainMenuActivity,然后按下后退按钮Logout活动完成其工作,完成,但不是关闭应用程序,活动B来到前面。我尝试使用FLAG_ACTIVITY_CLEAR_TOP从活动B启动MainMenuActivity,然后在B上调用finish(),但在这种情况下,A来到了前面。我也试着设置:

<activity android:name="abc.def.LogoutActivity" android:clearTaskOnLaunch="true"></activity>

但结果和以前一样。你能帮帮我,我该怎么办?


好的,所以我终于成功了。创建活动后,我在static ArrayList<Activity>中注册。在“LogoutActivity”完成其工作之后;它只是在ArrayList中注册的每个Activity上调用finish()。它有效,但我想这不是很好。但我还没想出如何用FLAG_ACTIVITY_CLEAR_TOP来做到这一点。

1 个答案:

答案 0 :(得分:0)

@sandrstar在评论中说:

  来自API 11的

您可以使用FLAG_ACTIVITY_CLEAR_TASK

它对我来说非常有效,因为它删除了所有活动,而不仅仅是最重要的活动。