【问题标题】:Save android activity state保存android活动状态
【发布时间】:2012-05-25 22:02:54
【问题描述】:

我尝试创建 LUDO 游戏,当用户停止游戏时,我想保存游戏状态(活动状态)。

我知道我需要在 OnPause() 方法中保存状态,但是我需要保存很多变量,而且它们都会随着时间发生变化,所以我不确定我是否可以用这种方式保存状态。

那么我可以保存整个 Activity 和 OnResume() 方法来恢复它并继续游戏吗?

谢谢。

【问题讨论】:

    标签: android state android-activity activity-lifecycle


    【解决方案1】:

    不知道你说的及时改变是什么意思。你是说你的游戏在玩家不玩的时候也在进行吗?通常,您只会保存重建当前状态所需的最少信息量。对于棋盘游戏,这可能是每个玩家棋子的位置,以及轮到谁。

    如果你真的有太多的游戏状态以至于保存和恢复会很笨拙,或者游戏必须在 Activity 关闭时进行,或者从静态数据重新创建状态太困难(我可能会反对所有命题,但为了讨论,我们可以把它当作给定的),那么我建议你把它写成一个客户端-服务器应用程序,其中一个 Android 服务运行游戏引擎,你的 Activity 完成所有视觉效果和用户交互。

    【讨论】:

    • 这就是游戏的运作方式。它不断刷新屏幕,当用户等点击播放器吃其他播放时我创建动画(及时更改参数),因此可以更改一些参数然后用户可以退出应用程序并且某些参数不会同步(如果用户在某些方法的中间退出)。因此,如果可能的话,我需要保存整个活动,当我恢复它时,我会继续上次活动停止的地方(从方法中间)。这可能吗?
    • 冻结整个 Activity 并精确恢复它是不切实际的。您应该弄清楚哪些局部变量对于重新创建合适的原始副本很重要。 (有关代码示例,请参阅 stackoverflow.com/a/151940/517561。)诸如暴徒处于循环动画的哪个阶段等次要细节可能不值得努力。
    【解决方案2】:

    我想你正在寻找How to save an Android application's state

    该文档还提供了有关saving persistent stateonPause 的详细信息。

    【讨论】:

    • 这就是游戏的运作方式。它不断刷新屏幕,当用户等点击播放器吃其他播放时我创建动画(及时更改参数),因此可以更改一些参数然后用户可以退出应用程序并且某些参数不会同步(如果用户在某些方法的中间退出)。因此,如果可能的话,我需要保存整个活动,当我恢复它时,我会继续上次活动停止的地方(从方法中间)。那可能吗?你有同样的建议吗?谢谢。
    • 当一个活动退出时,它会总是调用onPause,所以你可能想在那个方法中保存很多状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多