2016-10-28 86 views
0

是否有可能以约5分钟的延迟运行后台任务,并且在任务执行前应用程序进入前台时能够取消后台任务?延迟后在iOS上执行后台任务

为了解释这种情况,我正在开发的应用程序在开放时的设置时间相当长。理想情况下,它需要在进入后台时清理所有资源,并在进入前台时从头开始重新创建它们。这部分是为了安全,部分是为了减少设备能源使用(网络,BLE)。

如果用户在短时间内切换到另一个应用程序并返回到我的应用程序,则会产生一种尴尬的用户体验。他们坚持等待几秒钟,重新初始化所有内容。

作为一种折衷,我想在清理过程中增加一个延迟,比如5分钟。因此,如果用户在不到5分钟的时间内回来,所有的东西都在那里,立即可用。否则,它需要一些时间来重新初始化。我怎么能实现它?

+0

你想在后台执行什么样的任务? –

+0

该任务释放一些资源并重置导航堆栈。 – SaltyNuts

回答

1

在iOS中,当用户存在应用程序时,应用程序最多可以有3分钟的后台处理时间。所以如果你愿意使用3分钟计时器,你可以在UIApplication.sharedApplication上使用beginBackgroundTaskWithExpirationHandler:。后台任务可以使用dispatch_after以2分55秒的时间或接近3分钟的时间进行清理。当用户回到应用程序时,如果时间未到期,您可以设置标志或重置计时器,以便dispatch_after什么也不做。