当 iPhone 进入后台状态时,dispatch_time 如何工作?
How does dispatch_time work when iPhone becomes in background state?
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
当使用此方法并在 iphone 上按主页按钮时,延迟 将不再起作用或无效。相反,当返回我的应用程序时,本应在“10 秒”后触发的 closure 只会在返回应用程序时发生。不管我是在 1 小时还是 10 秒后返回应用程序。
如何在后台 delay 之后触发 closure?
当您按下主页按钮时,您的应用程序将转换到后台状态,如果没有任何东西将其保持在该状态,它将转换到挂起状态,在该状态下没有代码 运行。
让您的应用 运行在后台运行的一种方法是使用后台任务。
let taskId = UIApplication.sharedApplication.beginBackgroundTask(..)
然后您可以在您的代码 运行s:
之后结束后台任务
UIApplication.sharedApplication.endBackgroundTask(taskId)
这将允许应用程序返回挂起状态。
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
当使用此方法并在 iphone 上按主页按钮时,延迟 将不再起作用或无效。相反,当返回我的应用程序时,本应在“10 秒”后触发的 closure 只会在返回应用程序时发生。不管我是在 1 小时还是 10 秒后返回应用程序。
如何在后台 delay 之后触发 closure?
当您按下主页按钮时,您的应用程序将转换到后台状态,如果没有任何东西将其保持在该状态,它将转换到挂起状态,在该状态下没有代码 运行。
让您的应用 运行在后台运行的一种方法是使用后台任务。
let taskId = UIApplication.sharedApplication.beginBackgroundTask(..)
然后您可以在您的代码 运行s:
之后结束后台任务UIApplication.sharedApplication.endBackgroundTask(taskId)
这将允许应用程序返回挂起状态。