后台获取 iOS - 已终止的应用程序
Posted
技术标签:
【中文标题】后台获取 iOS - 已终止的应用程序【英文标题】:Background Fetch iOS - Terminated Apps 【发布时间】:2015-05-17 17:49:46 【问题描述】:我想这可能会被安静地回答几次,但我仍然想澄清一些未知的情况。
我一直在为我的一个 ios 应用程序寻找 Background Fetch API。我从几篇文章中了解到,当操作系统决定检查后端服务器是否有任何新数据时,fetchNewDataWithCompletionHandler
将被调用(无论我们设置的自定义获取间隔如何)。文章和教程说只有当您的应用程序处于非活动/后台/暂停状态时才会调用它,而不是当用户从应用程序切换器强行终止应用程序时。
但我的问题是;
-
在 WWDC 2013 视频中,讲师说:
有两个非常重要的场景需要测试,第一个场景是当 您的应用在后台启动以获取新内容,第二个是 您的应用在后台恢复以获取新内容。
我认为第二种情况是应用程序从后台/暂停状态恢复。但是第一个场景是什么?我们的应用程序将从哪个状态在后台“启动”以获取数据?从非运行状态?
-
要测试后台获取,有两种选择,一种是使用“由于后台获取而启动”创建新方案,另一种是从调试/模拟后台获取。我认为第二个是在应用程序处于后台或挂起时模拟后台获取。但是第一种情况是什么?与应用程序何时未运行(从应用程序切换器中删除)有关吗?
有什么想法吗?
谢谢!!
【问题讨论】:
【参考方案1】:第一种情况是您的应用当时没有运行。 iOS 已决定给您的应用一些运行时间,但您的应用尚未启动。
如果手机最近重新启动(因此您的应用从未启动过),或者您的应用很可能因其他事情需要内存而被终止,则可能会发生这种情况。如果用户启动了许多其他大型应用程序(例如游戏),那么您的应用程序最终会从内存中被逐出。
如果用户使用应用切换器关闭应用,这将永远不会发生;如果用户杀死了应用程序,那么 iOS 将不会重新启动它,因为它假定用户希望它保持死亡状态。
【讨论】:
以上是关于后台获取 iOS - 已终止的应用程序的主要内容,如果未能解决你的问题,请参考以下文章