我的应用程序显示注册活动的第一次用户运行应用程序,看起来像:
ActivitySplashScreen(欢迎加入游戏,注册账号吗?)
ActivitySplashScreenSignUp(很好,填写这个信息)
ActivityGameMain(游戏主界面)
因此,当用户单击每个屏幕上的按钮时,这些活动以相同的顺序相互启动。
当用户从活动#2到#3时,是否有可能将#1和#2从历史堆栈中完全擦除?我希望这样,如果用户处于#3,并点击返回按钮,他们只会回到主屏幕,而不是回到启动画面。
我想我可以完成任务。开始第三项任务,但想看看是否有更简单的方法,
谢谢
在API 11之前工作的一种方法是首先启动ActivityGameMain,然后在该活动的onCreate中启动ActivitySplashScreen活动。ActivityGameMain不会在你太早调用startActivity时出现。
然后你可以在启动ActivityGameMain时通过在Intent上设置这些标志来清除堆栈:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
您还必须将此添加到ActivitySplashScreen:
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
按回那个活动不会回到你的ActivityGameMain。
我假设你不希望启动画面回到任何一个,为了实现这一点,我建议将它设置为noHistory在你的AndroidManifest.xml。然后将goBackPressed代码放在ActivitySplashScreenSignUp类中。
然而,我发现了一些方法来打破这个。从通知中启动另一个应用程序,同时ActivitySplashScreenSignUp显示,并且不重置回溯历史。
唯一真正解决这个问题的方法是在API 11中:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);