Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android应用程序持久状态的设计模式_Java_Android - Fatal编程技术网

Java android应用程序持久状态的设计模式

Java android应用程序持久状态的设计模式,java,android,Java,Android,对于android,如果调用onDestroy(),我将尝试保持状态。我想知道,为了使实际的应用程序功能与持久性功能分离,常用的设计模式是什么?例如,我有一个For循环,循环遍历游戏中的所有玩家。此更新发生在游戏的每一轮结束时。是否有可能在更新过程中应用程序被破坏了一半?如果发生这种情况,我需要包括什么样的逻辑来记住更新了哪个播放机。保存状态有两个主要选项。如果您关心的是实例变量,那么重写的答案将提供一个很好的示例来说明如何执行此操作 对于持久数据,可以将其存储在SharedReferences

对于android,如果调用onDestroy(),我将尝试保持状态。我想知道,为了使实际的应用程序功能与持久性功能分离,常用的设计模式是什么?例如,我有一个For循环,循环遍历游戏中的所有玩家。此更新发生在游戏的每一轮结束时。是否有可能在更新过程中应用程序被破坏了一半?如果发生这种情况,我需要包括什么样的逻辑来记住更新了哪个播放机。

保存状态有两个主要选项。如果您关心的是实例变量,那么重写的答案将提供一个很好的示例来说明如何执行此操作


对于持久数据,可以将其存储在SharedReferences、SQLite数据库中,也可以将其写入文件。这篇文章应该可以帮助您入门:

如果用户切换到另一个应用程序(如接听电话),您的应用程序可能会在更新过程中中途被删除

考虑到这种情况,您可能需要将状态持久化为onPause(),而不是onDestroy(),因为onPause()是保证在系统终止活动时调用的最后一个方法

在onPause()中,您可以启动一个后台服务来执行更新,这可以为您的进程提供更高的优先级,以便在您执行更新时,它不太可能被系统杀死


请参阅和文档中的更多详细信息。

安卓对于终止应用程序不是很好。你可能会也可能不会陷入停顿或重复故事。您可能无法在VM关闭时接收钩子。基本上,你的应用程序可以在任何时候死掉(内存压力低),用户杀死它,等等,你不会得到任何警告。基本上,最好的做法是假设您可以随时死亡,并在获得临界状态后立即存储或更新它


基本上,我要么创建一个SQLitedatabase,要么为此使用共享首选项。

看看fragments API