IOS允许长时间在后台运行的情况有7种:
  audio
  VoIP
  GPS
  下载新闻
  和其它附属硬件进行通讯时
  使用蓝牙进行通讯时
  使用蓝牙共享数据时
  除以上情况,程序退出时可能设置短暂运行10分钟
  让程序退出后台时继续运行10分钟
  在XXAppDelegate中增加:UIBackgroundTaskIdentifier bgTask;

- (void)applicationDidEnterBackground:(UIApplication *)application
{
   bgTask = [application beginBackgroundTaskWithExpirationHandler:^{       // 10分钟后执行这里,应该进行一些清理工作,如断开和服务器的连接等
       // ...
      // stopped or ending the task outright.
       [application endBackgroundTask:bgTask];
      bgTask = UIBackgroundTaskInvalid;
  }];
  if (bgTask == UIBackgroundTaskInvalid) {
      NSLog(@"failed to start background task!");
  }
  // Start the long-running task and return immediately.
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      // Do the work associated with the task, preferably in chunks.
      NSTimeInterval timeRemain = 0;
      do{
          [NSThread sleepForTimeInterval:5];
          if (bgTask!= UIBackgroundTaskInvalid) {
              timeRemain = [application backgroundTimeRemaining];
              NSLog(@"Time remaining: %f",timeRemain);
          }
      }while(bgTask!= UIBackgroundTaskInvalid && timeRemain > 0);
       // 如果改为timeRemain > 5*60,表示后台运行5分钟
      // done!
      // 如果没到10分钟,也可以主动关闭后台任务,但这需要在主线程中执行,否则会出错
      dispatch_async(dispatch_get_main_queue(), ^{
          if (bgTask != UIBackgroundTaskInvalid)
          {
             // 和上面10分钟后执行的代码一样
              // ...
              // if you don't call endBackgroundTask, the OS will exit your app.
             [application endBackgroundTask:bgTask];
              bgTask = UIBackgroundTaskInvalid;
          }
      });
  });
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
  // 如果没到10分钟又打开了app,结束后台任务
  if (bgTask!=UIBackgroundTaskInvalid) {
      [application endBackgroundTask:bgTask];
     bgTask = UIBackgroundTaskInvalid;
  }
}
 

 后台时,如果某些代码你不希望执行,可以加以下条件:

UIApplication *application = [UIApplication sharedApplication];
if( application.applicationState == UIApplicationStateBackground) {
   return;
}
 

有的app虽然我们不允许通知,但还是会弹出消息,应该是设置了定时器,到某一时间就让程序后台运行一会,从服务器更新数据,然后显示出来。

app进入后台申请10分钟活跃时间-b的更多相关文章

  1. 延长zencart1.5.x后台的15分钟登录时间和取消90天强制更换密码

    延长zencart1.5.x后台的15分钟登录时间 打开includes\functions\sessions.php if (IS_ADMIN_FLAG === true) { if (!$SESS ...

  2. 怎么样excel其产生的条形码(10分钟的时间excel)从而出现了条形码

    现在快递行业.京东购物,这样一来,使用条码管理,因此,如何在你的excel其中还生产商品条码管理它?其实很easy,4步骤学会!10分钟搞定. 1.从网址如下.下载字体, 2.双击安装字体. 3,在e ...

  3. 对iOS后台模式最多10分钟运行时间的进一步理解

    在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...

  4. ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方式

    原来定位服务是10分钟收不到定位信息就挂起定位,如今变为最短3分钟,预计都是为了省电吧. 仅仅要你开启应用的后台定位,而且10分钟有一次定位,那么苹果就不会关闭你的线程.如今变成3分钟.若你的应用开启 ...

  5. Django从Models 10分钟定制一个Admin后台

    目录 Django从Models 10分钟建立一套RestfulApi Django从Models 10分钟定制一个Admin后台 简介 Django自带一个Admin后台, 支持用户创建,权限配置和 ...

  6. [入门到吐槽系列] Webix 10分钟入门 一 管理后台制作

    前言 本人是服务端程序员,同时需要兼职前端开发.常用的就是原生态的HTML.Javascript,也用过ExtJS.Layui.可是ExtJS变公司后非常难用.Layui上手还行,用过一段时间,会觉得 ...

  7. sql server:取当前时间前10分钟之内的数据 dateadd()

    当前时间 select GETDATE() 当前时间点前10分钟 dateadd() ,GETDATE()) 取当前时间点前10分钟以内的数据,且按创建时间倒序排 select * from tabl ...

  8. delphi 牛逼 了 app (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序

    (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序 http://v.qq.com/x/page/m0328h73bs7.html?ptag=bbs_csdn_net

  9. iOS保持App真后台运行

    https://www.jianshu.com/p/d466f2da0d33 在我看来,苹果系统与安卓系统最直观的区别就是后台处理方式了吧,安卓手机一旦开启了很多app放到后台,即使前台什么也不做,就 ...

随机推荐

  1. HTML插入SWF

    1.插入透明flash代码 <object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase=" ...

  2. Web前端学习笔记3

    1.meta标签. 1.1 <meta charset="utf-8"> charset:字符集 1.2 <meta name="keywords&qu ...

  3. Table of Contents - MongoDB

    Getting Started Installation Installing MongoDB on Windows Installing MongoDB on Linux Introduction ...

  4. IIS7.0配置HTTPS安全类型的网站

    HTTPS,它是一个安全通信通道,是基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字 层(SSL)进行信息交换,简单来说它是HTTP的安全版.主要在一些对安全性要求比较高的网站 ...

  5. c# 生成项目或重新生成项目时报“Project not selected to build for this solution configuration”之解决办法

    菜单->生成->配置管理器->给要生成的项目打钩

  6. Python Opearte SQLAlchemy Do Something

    近段时间在看SQLAlchemy,总之万事开头难,但是么办法. Database Urls The create_engine() function produces an Engine object ...

  7. 程序代码创建IISWEB站点

    #region 新建立一个IISWEB站点 ///<summary> ///添加一个站点 ///</summary> public string CreateWebSite() ...

  8. 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象

    post请求原代码: $.post( "/User/Home/Code", { Phone: $( "#phone").val() }, function (d ...

  9. Python深复制浅复制or深拷贝浅拷贝

    1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.(比深拷贝更加节省内存)2. copy.deepcopy 深拷贝 拷贝对象及其子对象 用一个简单的例子说明如下: >& ...

  10. (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景

    随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...