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. JavaScript:exec()方法的用法及说明

    最近在看某知名js框架的源码,突然间发现自己对exec()方法竟然不太理解,然后就仔细的分析了一下这个方法 下面贴个exec()方法使用的代码出来 rquickExpr = /^(?:\s*(< ...

  2. 【转】C# 中访问修饰符

    用通过代码:  类内部 using System;class Mod{    void defaultMethod()    {        Console.WriteLine("this ...

  3. NSTimer实现读秒、倒计时等周期性操作

    self.timerSchedule = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(spin ...

  4. shell中使用echo命令改变输出显示样式

    文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例:echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪 ...

  5. ubuntu tty 永久修改中文环境为英文

    以下代码只针对当前用户tty1有效, 对我来说足够了 vim ~/.bashrc 加入如下代码 if [ "$(tty)" = "/dev/tty1" ]; t ...

  6. Ajax请求ashx 返回 json 格式数据常见问题

    问题:ashx 返回的字符串json格式,在前台ajax自动解析失败. 问题分析:经过排查,发现是拼接json时出现” ’  “单引号,jquery无法解析,用” “ “双引号才可以.例如: stri ...

  7. AFNetworking2.4.1 解析

    http://wenku.baidu.com/view/6ec734a84028915f814dc26d.html

  8. js、expression表达式解析

    首先理解一下下面的表达式:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeigh ...

  9. 济南学习 Day1 T1 am

    题意:给你两个日期,问这两个日期差了多少毫秒 #include<cstdio> #include<cstring> #include<ctime> #include ...

  10. 使用CInternetSession CHttpFile下载网页链接地址的文件

    思路很清晰,使用CInternetSession创建CHttpFile对象.然后对该对象获取文件信息.进行文件读写操作均可. void DownloadFile(LPCTSTR szURL, LPCT ...