是否可以延迟大约5分钟运行后台任务,如果应用程序在执行任务之前进入前台,是否可以取消它?
为了解释这个问题,我正在开发的应用程序在开放时有相当长的设置时间。理想情况下,它需要在进入后台时清理所有资源,并在进入前台时从头开始重新创建它们。这部分是为了安全,部分是为了减少设备能耗(网络,BLE)。
如果用户在短时间内切换到另一个应用程序并返回我的应用程序,则会产生尴尬的用户体验。他们等待几秒钟才能重新初始化所有内容。
作为折衷方案,我想在清理过程中添加延迟,比如说5分钟。因此,如果用户在不到5分钟内回来,一切都仍在那里,立即可用。否则,重新初始化确实需要一些时间。我怎么能实现它?
答案 0 :(得分:1)
在iOS中,当用户存在应用时,应用最多可以有3分钟的后台处理时间。因此,如果您愿意使用3分钟计时器,则可以在beginBackgroundTaskWithExpirationHandler:
上使用UIApplication.sharedApplication
。然后,后台任务可以使用dispatch_after,时间为2分55秒或接近3分钟,然后进行清理。当用户回到应用程序中时,如果时间没有到期,您可以设置一个标志或重置计时器,以便dispatch_after不执行任何操作。