关于退出应用程序的问题(保存数据和加载数据)

Posted

技术标签:

【中文标题】关于退出应用程序的问题(保存数据和加载数据)【英文标题】:Question regarding quitting app (saving data & loading data) 【发布时间】:2010-07-20 16:11:12 【问题描述】:

我想问一下,当用户完全退出应用程序时,调用了哪个方法。

我的意思是完全退出应用程序是在用户点击主页按钮后,应用程序实际上是在后台运行,但是每当用户双击主页按钮,然后点击并按住应用程序图标,然后点击RED MINUS 符号退出应用程序。

每当应用程序进入后台时,我都会尝试保存我的数据,并在应用程序恢复活动(前台)时加载数据。只要我没有完全退出应用程序,它就可以工作。

如果我通过点击红色减号退出应用程序并重新启动应用程序,我保存的所有数据都消失了吗?奇怪的情况是,有时会保存,可以加载,但大多数情况下不会保存。

我仔细检查了我的保存方法并尝试 NSLog 它,我保存了所有数据,但只是不知道为什么在用户通过点击红色减号退出应用程序后无法加载它。

有人知道我的应用会发生什么吗?顺便说一句,我正在使用 NSUserDefaults 来保存我的数据并加载我的数据。

[appDefaults setObject: object objectForKey: @"key"]; [appDefaults objectForKey:@"key"];

【问题讨论】:

【参考方案1】:

为什么要等到应用程序退出才能保存数据?为什么不一拿到就保存呢?

但是,如果您必须在退出前保存数据,请使用:-[<UIApplicationDelegate> applicationWillTerminate:] 方法。

【讨论】:

好吧,我已经改了,现在每当用户插入新数据时它都会保存数据:D【参考方案2】:

NSUserDefaults 定期保存您给它的值,不一定在您的应用程序终止时保存。为确保将您的设置写入磁盘,请在 -applicationWillTerminate: 中的默认对象上调用 -synchronize 方法。

【讨论】:

我可以在调用 save 方法时调用 -synchronize 方法吗?内存占用大吗? 除非您在默认值中存储大量数据,否则 -synchronize 应该几乎是立即的。不过,您实际上并不需要一直调用它。当您的应用运行时,默认值会缓存在内存中。

以上是关于关于退出应用程序的问题(保存数据和加载数据)的主要内容,如果未能解决你的问题,请参考以下文章

在 kivymd 上重新运行应用程序后如何保存和加载数据

退出应用程序并重新加载时保存 UIButton 的状态

保存数据时出现问题

用户退出应用程序时在设备上安全保存私人数据

核心数据:NSManagedObjectContext 未保存/获取请求失败,直到应用退出和重新启动

应用退出和重新启动时不保存 NSManagedObjectContext