我的应用程序中有“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来做到这一点。
答案 0 :(得分:0)
@sandrstar在评论中说:
来自API 11的您可以使用
FLAG_ACTIVITY_CLEAR_TASK
它对我来说非常有效,因为它删除了所有活动,而不仅仅是最重要的活动。