我想将时间戳发送到远程服务器,并等待成功的回调,然后将时间戳存储在本地,如果远程服务器没有响应。
我可以付诸applicationDidEnterBackground
实施吗?
我想将时间戳发送到远程服务器,并等待成功的回调,然后将时间戳存储在本地,如果远程服务器没有响应。
我可以付诸applicationDidEnterBackground
实施吗?
根据 iOS 开发者库UIApplicationDelegate 协议参考
您对此方法的实现大约有五秒钟的时间来执行任何任务并返回。如果您需要额外的时间来执行任何最终任务,您可以通过调用 beginBackgroundTaskWithExpirationHandler: 向系统请求额外的执行时间。在实践中,您应该尽快从 applicationDidEnterBackground: 返回。如果该方法在时间用完之前没有返回,则您的应用程序将被终止并从内存中清除。
您应该在此方法退出之前执行与调整用户界面相关的任何任务,但其他任务(例如保存状态)应根据需要移动到并发调度队列或辅助线程。因为您在 applicationDidEnterBackground: 中启动的任何后台任务很可能在该方法退出之前不会运行,因此您应该在启动这些任务之前请求额外的后台执行时间。换句话说,首先调用 beginBackgroundTaskWithExpirationHandler: 然后在调度队列或辅助线程上运行任务。
因此,您有大约5 秒的时间来执行任何任务并返回“applicationDidEnterBackground”方法。
如果你想在进入后台之前做任何网络事情,你应该要求额外的时间beginBackgroundTaskWithExpirationHandler:
。
试试这个代码
dispatch_queue_t savingQueue = dispatch_queue_create("savingQue", NULL);
dispatch_async(savingQueue, ^{
//do something in bg....
dispatch_async(dispatch_get_main_queue(), ^{
});
});
dispatch_release(savingQueue);