【问题标题】:Start Activity and clear activity history开始活动并清除活动历史记录
【发布时间】:2010-04-22 15:46:14
【问题描述】:

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

干杯,

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我不妨透露一下我目前用来解决问题的骗局。在“预登录”活动中,我已在清单中进行了设置:

    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 或更高级别的手机,但它的作用是在“打开新活动”动画上播放“回到上一个活动”动画(至少在机器人上)和联系)。这样可以防止在用户按下后退按钮时出现新 Activity 启动的混乱外观。

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

    【讨论】:

    • 当我试图模拟“返回”到以前的活动(当然,不是真的存在)时,这对我来说完全有效。谢谢!我打算使用默认动画 ID 来完成此操作,但令我惊讶的是,这些 ID 并不公开。去图吧。
    • 如果你实际使用keyDown,你应该返回true而不是调用super
    【解决方案2】:

    对于早期版本,您可以使用65536 而不是Intent.FLAG_ACTIVITY_NO_ANIMATION

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 2011-08-13
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多