启动活动并清除活动历史记录

时间:2010-04-22 15:46:15

标签: android android-activity

所以我的应用程序中有一大堆活动。我需要做的是,当用户登录系统时,应清除活动历史记录。当我开始一项新活动时,我不能使用finish(),因为我希望活动在用户登录之前有历史记录。我在开始活动时尝试使用不同的标志,但我没有成功。有什么想法吗?

干杯,

2 个答案:

答案 0 :(得分:2)

我不妨透露一下我目前用来解决问题的方法。在“预先登录”活动中,我在清单中设置了这个:

android:noHistory="true"

然后在每个活动中我都有这个代码:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(MyActivity.this, ParentActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intent);
        return true;
    }
    return super.onKeyDown(keyCode, event);

}

FLAG_ACTIVITY_NO_ANIMATION仅适用于API等级为5或更高的手机,但它的作用是取而代之的是“打开新活动” - 动画,“回到之前的活动” - 动画播放(至少在机器人上)和nexus)。这可以防止在用户按下后退按钮时启动新活动的混乱外观。

这个解决方案并不完美。在API级别低于5的手机上,动画会变得不正确。此外,它不是超级整洁,需要更多的代码,然后我更喜欢。它仍然有效......

答案 1 :(得分:1)

对于早期版本,您可以使用65536代替Intent.FLAG_ACTIVITY_NO_ANIMATION