【问题标题】:Perform a background task on iOS after delay延迟后在 iOS 上执行后台任务
【发布时间】:2016-10-28 15:40:58
【问题描述】:

是否可以运行延迟约 5 分钟的后台任务,如果应用在任务执行之前进入前台,可以取消它?

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

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

作为一种妥协,我想在清理过程中增加一个延迟,比如 5 分钟。因此,如果用户在不到 5 分钟内回来,一切都还在那里,立即可用。否则重新初始化确实需要一些时间。我该如何实现它?

【问题讨论】:

  • 你想在后台执行什么样的任务?
  • 该任务释放了一些资源并重置了导航堆栈。

标签: ios objective-c background


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2015-09-14
    • 2011-07-16
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多