我有一种情况,我必须在应用程序终止之前调用Web服务,但不能在进入后台时调用它,因为这应该只在应用程序终止时执行一次。
我尝试了后台执行的事情,但我相信一旦应用程序被终止,它就不会工作,但只有当应用程序处于后台时才会工作。
这是我在applicationWillTerminate:
__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
// Call web service here
[application endBackgroundTask:bgTask];
bgTask =UIBackgroundTaskInvalid;
});
答案 0 :(得分:0)
你不能这样做,老实说,你为什么要这样做?
无论如何,这是一个不合适的问题。如果电池死了怎么办?如果应用程序崩溃怎么办?如果应用程序进入后台然后操作系统在内存压力增加时终止它会怎么样?如果您丢失了互联网访问权限并且应用程序被终止了怎么办?
您可以做的最接近的事情是实施某种心跳服务,您的应用经常会ping。如果ping停止,您的应用已终止或网络连接丢失。