在应用程序退出时保存Android应用程序数据

在应用程序退出时保存Android应用程序数据,android,persistence,Android,Persistence,似乎有大量关于保存活动状态的信息,但我无法找到有关查找应用程序状态的信息 我正在寻找一些设计思路来解决我遇到的一个问题。我正在开发一款具有相当大数据模型(1-2MB)的游戏。这个模型存在于任何活动之外,事实上有许多活动都与之交互。这些活动是短暂的,总是来来往往 目前,我在应用程序中保留了一个指向数据模型的指针,所有活动都通过它访问数据模型。我需要在应用程序被终止的情况下保存该数据模型,但每次活动点击暂停时保存该数据模型的速度太慢,而暂停在活动来来去去时非常频繁 我需要的是一种确定我的应用程序(以

似乎有大量关于保存活动状态的信息,但我无法找到有关查找应用程序状态的信息

我正在寻找一些设计思路来解决我遇到的一个问题。我正在开发一款具有相当大数据模型(1-2MB)的游戏。这个模型存在于任何活动之外,事实上有许多活动都与之交互。这些活动是短暂的,总是来来往往

目前,我在应用程序中保留了一个指向数据模型的指针,所有活动都通过它访问数据模型。我需要在应用程序被终止的情况下保存该数据模型,但每次活动点击暂停时保存该数据模型的速度太慢,而暂停在活动来来去去时非常频繁

我需要的是一种确定我的应用程序(以及我的数据模型)正在被销毁的方法。我已经广泛地搜索了这个方法或回调,结果是空的

如果有任何建议,我将不胜感激

我无法找到关于查找应用程序状态的更多信息

这是因为Android中没有“应用程序状态”,就像Web应用程序一样

但它太慢了,无法在每次活动点击暂停时保存它

虽然您的整个数据模型可能是“1-2MB”,但对于任何给定的更改,更改的数据量都只是其中的一小部分。使用后台线程,仅修改已更改的数据

随着活动的来来去去去,这种情况经常发生

听起来你的活动太多了

我需要的是一种确定我的应用程序(以及我的数据模型)正在被销毁的方法

这是不可能的。你永远不会发现你正在被毁灭。Android可以并且将在用户请求(如强制关闭、任务杀手)或操作系统原因(如需要RAM来处理来电)的情况下终止您的进程而不发出警告


欢迎您使用
onUserLeaveHint()
,在许多情况下,当您整个应用程序失去前景时,会调用它,但我肯定不会指望这一点来实现数据模型的持久化。

请参阅@gtumca MAC我怀疑他的数据模型是一个对键值,即使对
SharedReferences
来说只有1-2MB?对于OP,也许你可以减少数据大小,从而减少总时间?Luksprog-我可以做一些事情,使我写入“保存”文件的部分更小,甚至小到300-400 KB。但这仍然太大了,无法在每次我的许多活动中有一项需要暂停时写下。我真的希望我能找到一些回调,让我知道我什么时候离开。如果您的数据大小太大,您需要使用数据库。bcoz据我所知,只有两种方法可以存储数据1
SharedReferance
,第二种方法是
Database
将数据模型放入本地服务中有什么好处吗?那里的文档说在服务被销毁之前会调用onDestroy,但我不知道这是不是真的。@user1609010:只有知道何时调用
stopService()
,这才有帮助。在您的情况下,这听起来不太可能。我的想法是,如果不调用onDestroy(),服务就不会被破坏。如果服务持有数据模型,那么我可以在调用onDestroy()时保存数据模型。如果应用程序重新启动时服务仍处于活动状态,那么我可以抓住现有服务,从而抓住数据模型。如果没有,我可以启动将加载数据模型的服务。@user1609010:“我的想法是,如果不调用onDestroy(),服务就不会被破坏。”
onDestroy()
不能保证在任何组件上被调用。不要等到任何(
活动
服务
)的
onDestroy()
)保存数据模型。确定。谢谢你的帮助。我认为我需要使用SQLLite数据库来始终存储数据模型的当前状态(本质上是将数据模型移动到SQLite中)。这样我就可以轻松地进行增量更改。我想不出任何其他简单的方法来做到这一点。