2010-04-22 134 views
6

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

干杯,

回答

2

我也可以透露我目前使用的解决我的问题的HAX。在“预登录”活动中,我已经将这个清单中的:在每个活动

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或更高,但它所做的是在“开放新活动” - 动画,“回到上一个活动” - 动画播放(至少在机器人和连线上)。这可以防止当用户按下后退按钮时启动新活动的混淆现象。

该解决方案并不完美。在API级别低于5的手机上,动画变得不正确。此外,它不是超级整洁,需要更多的代码,然后我更喜欢。尽管如此,它的工作原理...

+0

这完全为我工作,而不是真的那里)。谢谢!我打算用默认的动画ID完成这个工作,但令我惊讶的是,这些都不公开。去搞清楚。 – dmon 2011-10-17 15:38:33

+1

如果你实际使用的是keyDown,你应该返回true而不是调用super – njzk2 2012-11-05 13:37:03

+0

的确如此,我已经更正了我的答案。 – pgsandstrom 2012-11-05 14:23:26

1

你可以尝试模拟“回归”到以前的活动(即,当然,当使用65536,而不是Intent.FLAG_ACTIVITY_NO_ANIMATION为早期版本