【发布时间】:2010-04-22 15:46:14
【问题描述】:
所以我的应用程序中有一个巨大的活动迷宫。我需要做的是,当用户登录系统时,应该清除活动历史记录。当我开始一项新活动时,我不能只使用完成(),因为我希望这些活动在用户登录之前有一个历史记录。我在开始一项活动时尝试了不同的标志,但我没有成功。有什么想法吗?
干杯,
【问题讨论】:
所以我的应用程序中有一个巨大的活动迷宫。我需要做的是,当用户登录系统时,应该清除活动历史记录。当我开始一项新活动时,我不能只使用完成(),因为我希望这些活动在用户登录之前有一个历史记录。我在开始一项活动时尝试了不同的标志,但我没有成功。有什么想法吗?
干杯,
【问题讨论】:
我不妨透露一下我目前用来解决问题的骗局。在“预登录”活动中,我已在清单中进行了设置:
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 的手机上,动画会变得不正确。此外,它不是超级整洁,需要比我更喜欢的更多代码。尽管如此,它仍然有效......
【讨论】:
对于早期版本,您可以使用65536 而不是Intent.FLAG_ACTIVITY_NO_ANIMATION
【讨论】: