我想在应用进入后台十秒后执行一个操作,条件是用户在此期间没有返回应用。
为此,我使用以下代码:
-(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 秒过去之前,该操作将不会执行,我将看到此日志:
<AppDelegate: 0x15557890> ending background task 5
知道在这种情况下如何执行该操作吗?
最佳答案
尝试使用 - (void)applicationWillTerminate:(UIApplication *)application
来应对用户在执行您的操作之前终止应用程序的情况
关于ios - 用户在 iOS 上关闭应用程序后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056101/