ios - 用户在 iOS 上关闭应用程序后执行操作

标签 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 秒过去之前,该操作将不会执行,我将看到此日志:

    <AppDelegate: 0x15557890> ending background task 5

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

最佳答案

尝试使用 - (void)applicationWillTerminate:(UIApplication *)application 来应对用户在执行您的操作之前终止应用程序的情况

关于ios - 用户在 iOS 上关闭应用程序后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056101/

相关文章:

ios - iOS中能否实现单例继承

iphone - 如何使用左侧或右侧移动UILabel?

android - 选择器的 ListView 项目 LongClick 状态

java - 程序不改变颜色

ios - Swift 中 TableViewCell 中的 indexPathForRowAtPoint 错误

javascript - Chrome 扩展在 Background.js 中注册事件

ios - 在 XCode 4.3 中从命令行构建时链接任意库

ios - 两个 CGPoint 之间的测量单位

iphone - 如何从 iPhone 数据库中仅检索 3imagepaths 或 id

iphone - 如何覆盖 UISearchDisplayController searchResult TableView 中的 "no results"文本?