用户在iOS上关闭应用后执行操作

时间:2014-04-14 09:06:02

标签: ios iphone background

我想在应用程序转到后台十秒后执行操作,条件是用户在此期间没有回到应用程序。

为此,我使用此代码:

 -(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

知道如何在这种情况下执行操作吗?

1 个答案:

答案 0 :(得分:1)

尝试使用- (void)applicationWillTerminate:(UIApplication *)application用于用户在执行操作之前杀死应用的情况