Java android应用程序持久状态的设计模式
对于android,如果调用onDestroy(),我将尝试保持状态。我想知道,为了使实际的应用程序功能与持久性功能分离,常用的设计模式是什么?例如,我有一个For循环,循环遍历游戏中的所有玩家。此更新发生在游戏的每一轮结束时。是否有可能在更新过程中应用程序被破坏了一半?如果发生这种情况,我需要包括什么样的逻辑来记住更新了哪个播放机。保存状态有两个主要选项。如果您关心的是实例变量,那么重写的答案将提供一个很好的示例来说明如何执行此操作Java android应用程序持久状态的设计模式,java,android,Java,Android,对于android,如果调用onDestroy(),我将尝试保持状态。我想知道,为了使实际的应用程序功能与持久性功能分离,常用的设计模式是什么?例如,我有一个For循环,循环遍历游戏中的所有玩家。此更新发生在游戏的每一轮结束时。是否有可能在更新过程中应用程序被破坏了一半?如果发生这种情况,我需要包括什么样的逻辑来记住更新了哪个播放机。保存状态有两个主要选项。如果您关心的是实例变量,那么重写的答案将提供一个很好的示例来说明如何执行此操作 对于持久数据,可以将其存储在SharedReferences
对于持久数据,可以将其存储在SharedReferences、SQLite数据库中,也可以将其写入文件。这篇文章应该可以帮助您入门:如果用户切换到另一个应用程序(如接听电话),您的应用程序可能会在更新过程中中途被删除 考虑到这种情况,您可能需要将状态持久化为onPause(),而不是onDestroy(),因为onPause()是保证在系统终止活动时调用的最后一个方法 在onPause()中,您可以启动一个后台服务来执行更新,这可以为您的进程提供更高的优先级,以便在您执行更新时,它不太可能被系统杀死
请参阅和文档中的更多详细信息。安卓对于终止应用程序不是很好。你可能会也可能不会陷入停顿或重复故事。您可能无法在VM关闭时接收钩子。基本上,你的应用程序可以在任何时候死掉(内存压力低),用户杀死它,等等,你不会得到任何警告。基本上,最好的做法是假设您可以随时死亡,并在获得临界状态后立即存储或更新它
基本上,我要么创建一个SQLitedatabase,要么为此使用共享首选项。看看fragments API