我的任务是渲染,例如50个对象并将每个对象保存为文件。它设置为在后台继续运行,并在任务完成时通知用户。在前台,有一个进度条,向用户显示一切都是多远。
渲染&使用GCD在自定义后台线程上完成文件编写。为了更新进度条,调用main_queue上的dispatch_async。
当用户进入后台时,任务按计划继续,如果不在,仍然在后台,则在完成后通知用户。但是如果用户更快地返回,并且应用程序仍在呈现/写入,则我/用户希望看到进度并且所有>>>这不会发生。即使我更新进度条的方法是通过main_queue上的dispatch_async发送的,但是没有执行任务(或者如果你愿意,也会收到main_queue),直到我在后台发送的'renter / writing'任务完成并且ExpirationHandler已执行。
在'applicationWillEnterForeground:'方法中,我告诉应用程序,它应该'endBackgroundTask:'并将实例(= self.backgroundTask)设置为'UIBackgroundTaskInvalid',但这没有什么区别
当应用程序关闭时,有没有办法让我重新控制我在后台发送的任务(在GCD自定义后台线程上运行)(beginBackgroundTaskWithExpirationHandler :)?
和/或
我不是必须特别重新获得控制权,而是以不同的方式做某事吗?