4. URLSession完成处理程序不能使用,因此我们必须使用委托 。 5.永远不要不实现后台模式委托。 可以在后台启动或恢复使用具有后台配置的URLSession的应用程序,以便处理该会话中任务的完成 在此实现中,我能够观察到文件在URLSession的临时位置下载并移至所需的位置,然后进行解析和核心数据缓存。 但是,情况并非总是如此,下载委托在后台调用后,执行突然停止。 这里只有UIApplication开始后台任务开始。 6.实现UIApplication开始后台任务。 在didReceiveRemoteNotification中调用callTask()。 根据文档,此应用程序最多为您提供180秒的时间来在后台执行任务。 因此,请确保在接收静默通知时,下载,解析和保存所花费的总时间不超过180秒。 7.在BGTask的完成处理程序中调用stopBgTask() 执行以下步骤后,当设备处于非活动和挂起状态(包括密码锁定)时,应用程序将下载数据。 在应用程序崩溃或终止时,应用程序无法处理静默通知,而静默通知全都是不同的主题。 希望这对您有帮助。 任何帮助都可以通过pratheesh_db@hotmail.com与我联系。
以前,我们了解了代码结构,可读性和其他一些原理。 Swift编程入门第10部分-代码结构,可读性和原理 在上一篇文章中,我们介绍了基本协议,扩展和下标。 medium.com 是的,它不是技术性很强的工具,但是如果您一直在磨练自己的技能,那么您的项目就会变得相当庞大,并且您可能已经开始考虑可以使代码井井有条的方式。 项目之间的代码结构各不相同,因为在开始首次工作编程之前,开发人员很少谈论如何布局代码。 即使那样,它大部分时间还是安静的,只是希望您能赶上。 如果您尝试自己编写应用程序,则这样做的效果不太好。 当我们讨论了可读性时,我几乎不讨论任何事情,但是我为您提供了基础知识,因此当您回到代码中时,就不会迷失方向。 我可以只写一篇关于代码结构或可读性的整篇文章,但是为了使事情快速发展,我略过了。 如果您想了解有关结构或可读性的更多信息,请告诉我,本系列结束后,我将计划一些深入的文章。 最后,我们介绍了一些原则以为您提供指导,以及更多有关我为何以这种方式编写代码的上下文。 让我们开始吧。 Grand Central Dispatch是Apple处理称为调度队列的方法。 队列有三种类型: 串行 -按接收顺序执行发送到队列的工作,先入先出(FIFO)。 这些也称为专用调度队列。 并发 – 同时执行发送到队列的工作。 每个任务的启动顺序与将它们添加到队列的顺序相同。 串行队列和并发队列之间的主要区别在于,在串行队列中,下一个任务要等到第一个任务结束后才开始。在并发队列中,下一个任务可能不需要与第一个任务一样多的时间来完成,并且可能在第一个任务之前完成第一个任务完成。 在决定使用哪个队列时,请记住这一点。 这些也称为全局调度队列。 主调度队列 -这是应用程序的主线程,或应用程序所在的位置。 当您将代码放入View Controller的viewDidLoad()时,这就是所有工作的队列。 我将暂时脱离所有这些,以使您了解这些队列与硬件的关系。 在这里,我提供了排队时任务的快照。 在继续之前,我想先介绍几个定义。 运行循环-您的程序只有在告诉您时才停止,而在运行时,它会在while循环下运行,直到结束。 有时它需要处理事物,而其他时候,它只是简单地通过循环而没有任何变化。 线程-简单地说,这些是您的单独任务,如果您的任务需要另一个任务来完成其自己的过程,它将在另一个线程中处理该任务。 (不要与CPU Core混淆) CPU —计算机的大脑,这是使用一个或多个内核执行计算的设备。 核心-核心是处理器的物理或逻辑部分,可读取您的代码并返回结果。 每个核心都有许多硬件线程,可用于执行在其上发送的任务。 CPU Clock Speed(CPU时钟速度)—处理器读取1s和0s(二进制)的速度。 如果您曾经想过1 GHz意味着什么,Giga意味着十亿,那么1 GHz意味着处理器的每个内核每秒可以读取10亿个1或0。 我的开发计算机的处理器速度为2.8 GHz,具有8个内核。 这意味着它可以在其基本时钟速度下每秒处理2.8 * 8 = […]