【发布时间】:2012-10-22 22:28:49
【问题描述】:
我已经为我的问题寻找解决方案很长时间了,但是 Android 文档不是很清楚,网络解决方案也不能完全正常工作。
我正在开发一个游戏,其中主 Activity(游戏发生的地方)可以调用另一个简单的 Activity,然后返回。 它会像这样工作:
- 如果用户点击 Home 按钮然后返回游戏,则必须停止 Activity 并在没有通过 onDestroy 的情况下恢复(否则会丢失游戏状态)
- 主 Activity 调用其他 Activity 然后返回游戏时的相同功能。
- 当用户按下退出按钮时,游戏必须退出
对于前两点,我尝试这样做以确保创建并调用一个且只有一个主 Activity:android:launchMode="singleTask" 或 android:launchMode="singleTop" 但不幸的是,第一个适用于第一个问题,第二个适用于第二个问题,不适合两者!
我认为问题是:使用 singleTop 时,主 Activity 实际上并不在第二个 Activity 调用它的顶部(要清楚,我不明白我应该在什么情况下调用已经在堆栈顶部的活动!)。相反,singleTask 确保 Activity 在其堆栈中是唯一的,但是在用户单击 Home 按钮并返回到 Application 后,会调用另一个 Task,对吗?
无论如何,这是一个聪明的解决方案,还是我应该在 onStop/onPause 中保存我的游戏状态,然后在 onResume 中恢复它?
对于第三点,我尝试将android:noHistory="true" 添加到每个 Activity,然后当用户单击退出按钮时,我调用一个新 Activity,除了 onCreate 上的 finish() 方法之外什么都不做,这个 Activity 被调用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);,它的launchMode是singleInstance,但它不起作用,它只是在主Activity中总是返回。
【问题讨论】:
标签: android android-intent android-activity