当library(TTR)
data <- rep(1:3,2)
cumsum <- cumsum(data)
runSum <- runSum(data, n = 3)
DesiredResult <- ifelse(is.na(runSum),cumsum,runSum)
通知被调用时,我的应用程序状态是否可以保证恢复?
换句话说,如果我将一个私有布尔字段设置为true,那么当我从UIApplicationWillEnterForeground
通知方法处理程序在从后台转换到前台时检查它的值时,该变量是否仍然为真?
答案 0 :(得分:1)
不,当应用程序进入后台时,它仍会保留在内存中,但是如果内存不足,iOS会开始释放这些已暂停的应用程序,以便为必须加载的应用程序腾出空间。因此,基本上如果您想确保没有数据丢失,您必须将应用程序数据和设置保存在:
func applicationDidEnterBackground(_ application: UIApplication) {
}
func applicationWillTerminate(_ application: UIApplication) {
}
答案 1 :(得分:1)
如果您被告知您的应用被暂停,(通过致电applicationWillResignActive
),您应该保存您的应用状态。您的应用程序可能会在仍在内存中时再次激活,或者可能会被终止。如果再次重新激活,则所有应用的变量仍会保留其先前的值。如果没有,您将“冷”启动,您将需要恢复已保存的状态。
当您被告知要切换到非活动状态时,您无法知道是否会重新激活或终止。因此,您的问题的答案是否。你可能会被杀死而不会重新激活。
处理停用
当前景应用程序移动到后台时,UIKit首先调用 applicationWillResignActive:方法来停用应用程序。什么时候 如果发生停用,请执行以下操作。
将用户数据保存到磁盘并关闭所有打开的文件。始终保存用户 您的应用需要终止时的数据。如果是关闭文件 用户锁定设备。
只对保留用户数据至关重要。暂停 调度队列和操作队列,不安排任何新任务 执行。
使任何有效的计时器无效。