当用户将应用程序移动到后台时,我正在使用串行调度队列来序列化一些网络请求。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
dispatch_queue_t opQ = dispatch_queue_create("com.myapp.network", NULL);
dispatch_async(opQ, ^{
[self sendNetworkData1];
[self sendNetworkData2];
[self sendNetworkData3];
});
}
问题是当他们在我创建的这个队列上运行时,应用程序即使在它应该的 5 秒内也不会保持活动状态。
相反,当我在队列外发送相同的请求时,它们的发送时间大约为 8 秒。但应用程序随后崩溃。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self sendNetworkData1];
[self sendNetworkData2];
[self sendNetworkData3];
}
我还想把剩下的写在磁盘上,以便下次用户打开应用程序时发送。
实现这一点的最佳方法是什么?