【发布时间】:2013-05-11 09:27:37
【问题描述】:
我正在开发一款 Android 游戏。现在,我将用户状态的所有更改(SQLite 中的匹配项、SharedPreferences 中的用户首选项以及文件中的其他数据)保存在主片段的 onDestroy() 方法中(该片段应该一直处于活动状态并且可以打开其他活动,例如帐户片段或播放片段)。
如果我通过 Back 按钮退出应用程序,一切正常,因为调用了主片段的 onDestroy()。
问题是当我通过 Home 按钮退出时,或者当主要片段从操作系统中被杀死时。在这些情况下,不会调用 onDestroy(),因此不会保存游戏状态。
我知道如果我将游戏保存在onPause() 而不是onDestroy() 中,我可以解决这个问题,因为它总是被调用。但就我而言,存储操作非常大(SQLite + SharedPreferences + 文件,大量数据)并且在onPause() 中执行此操作意味着效率低下。
还有其他方法可以解决这个问题吗?
【问题讨论】:
-
创建一个服务,在调用 onPause() 时传递意图中的所有数据,然后在该服务中执行其余操作。我还没有尝试过这只是一个想法,因为该服务会将您的主要工作从活动转移到后台
标签: android database storage lifecycle