Android 区别于;“强制停止”;然后离开电话几个小时

Android 区别于;“强制停止”;然后离开电话几个小时,android,Android,我在市场上有几个游戏应用程序,它们试图通过以下代码保存用户在游戏中的进度(简化): 这似乎在99%的时间内都能正常工作,但我时不时收到用户的报告,他们的进度丢失了,但从来没有人能给我一系列的操作,让我能够重复这个错误。。。直到现在。这些步骤包括按下“主页”按钮退出程序,然后等待几个小时。然后,当他们再次运行游戏时,他们的进度将丢失。令人沮丧的是,这个序列不能缩短,用“强制停止”代替离开手机几个小时并没有同样的效果 假设手机放置数小时,应用程序中的部分或所有活动可能会以与强制停止略有不同的方式关闭

我在市场上有几个游戏应用程序,它们试图通过以下代码保存用户在游戏中的进度(简化):

这似乎在99%的时间内都能正常工作,但我时不时收到用户的报告,他们的进度丢失了,但从来没有人能给我一系列的操作,让我能够重复这个错误。。。直到现在。这些步骤包括按下“主页”按钮退出程序,然后等待几个小时。然后,当他们再次运行游戏时,他们的进度将丢失。令人沮丧的是,这个序列不能缩短,用“强制停止”代替离开手机几个小时并没有同样的效果

假设手机放置数小时,应用程序中的部分或所有活动可能会以与强制停止略有不同的方式关闭。。。但我不知道怎么做

有什么想法吗

编辑:我应该解释如何从构成我的游戏的各种活动中调用这些函数。这里有一个例子,但我也从其他几个地方调用了gs.save_state(),这只是为了更好的衡量

    public class Main_GamePlay extends Activity
    {
        Globals gs;
        public void onCreate(Bundle savedInstanceState)
        {
             gs = ((Globals) getApplicationContext());
        }
        protected void onPause()
        {
            gs.save_state();
        }
    }

可能不应该有任何正确的顺序,因为在您的情况下发生的是内存回收。当您按home键时,您的应用程序将进入后台状态,该状态具有更高的优先级,由垃圾收集器回收。因此,您应该尝试通过共享首选项以外的其他方式保存当前状态。可能您应该按save state如果可能的话,您当前活动的所在地


希望这能让你简要了解你想要什么。

这是什么?何时调用get/save_state函数?你应该在活动的onPause方法中保存状态。我已经编辑了原始帖子,所以你现在可以看到“this”实际上是“Globals.this”。顺便说一句,我确实在游戏的主活动暂停时调用了save_state。你不能使用Application对象进行同步吗?Android可以使用应用程序对象来同步自己的东西。创建一个单独的锁并重新测试你的应用程序。为什么你需要同步?我的游戏的图形和物理部分在不同的线程上运行。。。但我根本不是多线程方面的专家。我只是在没有正确理解的情况下入侵了其他人的线程代码。
    public class Main_GamePlay extends Activity
    {
        Globals gs;
        public void onCreate(Bundle savedInstanceState)
        {
             gs = ((Globals) getApplicationContext());
        }
        protected void onPause()
        {
            gs.save_state();
        }
    }