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

6

我在我的应用程序中有一个庞大的活动迷宫。我需要做的是,当用户登录系统时,活动历史记录应该被清除。我不能只在启动新活动时使用finish(),因为我希望活动在用户登录之前保留历史记录。我已经尝试了启动活动时不同的标志,但没有成功。有什么想法吗?

谢谢。

2个回答

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或更高的手机上起作用,它所做的是,在“打开新活动”动画上播放“返回到上一个活动”的动画(至少在droid和nexus上)。这样可以避免用户按下后退按钮时出现启动新活动的混乱外观。
这种解决方案并不完美。在API级别低于5的手机上,动画会变得不正确。此外,它不是非常简洁,需要比我喜欢的更多的代码。不过,它还是可以工作的...

当我尝试模拟“返回”到以前的活动时,这对我非常有效(当然,那个活动并不存在)。谢谢!我本来打算使用默认的动画ID来完成这个任务,但出乎意料的是,它们并不是公开可用的。真是让人费解。 - dmon
1
如果你真正使用了keyDown,那么你应该返回true而不是调用super。 - njzk2

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接