我想在应用程序转到后台十秒后执行操作,条件是用户在此期间没有回到应用程序。
为此,我使用此代码:
-(void)applicationDidEnterBackground:(UIApplication *)application{
UIBackgroundTaskIdentifier __block bgTask = 0;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self checkSession];
});
}
-(void)checkSession{
sleep(10);
if([[UIApplication sharedApplication] applicationState] != UIApplicationStateActive) {
NSLog(@"Do action after 10 seconds");
}
else{
NSLog(@"Do nothing after 10 seconds");
}
}
问题在于,如果用户在后台终止应用程序(通过滑动并解除它),但在10秒过去之前,操作将不会执行,并且我将看到此日志:< / p>
<AppDelegate: 0x15557890> ending background task 5
知道如何在这种情况下执行操作吗?
答案 0 :(得分:1)
尝试使用- (void)applicationWillTerminate:(UIApplication *)application
用于用户在执行操作之前杀死应用的情况