zoukankan      html  css  js  c++  java
  • ios实现程序切入后台,实现后台任务

    首先,iOS 会再持续切入后台,给我们5秒钟的时间去处理相关数据,5秒后,程序不会再执行任何代码,处于挂起状态。
    
    // 项目需求,按下Home切换后台后向服务器传一些数据,废话不多说,直接上代码

    /**

     *  申请后台任务

     */

    - (void)beginBackgroundTask

    {

        _bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

            [self endBackgroundTask];

        }];

    }

     

    /**

     *  结束后台任务

     */

    - (void)endBackgroundTask

    {

        dispatch_async(dispatch_get_main_queue(), ^(void){

            // 标记指定的后台任务完成

            [[UIApplication sharedApplication] endBackgroundTask: _bgTask];

            // 销毁后台任务标识符

            _bgTask = UIBackgroundTaskInvalid;

        });

    }

     

    /**

     *  后台运行

     */

    - (void)backgroundTask

    {

        [self beginBackgroundTask];

        

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

            

            NSLog(@"starting run background task in multi-thread:%@, remain time:%f", [NSThread currentThread],[UIApplication sharedApplication].backgroundTimeRemaining);

            

            //执行你的任务或者网络请求,执行完后可以提前调用endBackgroundTask结束后台任务。

        });

    }

     

    - (void)applicationDidEnterBackground:(UIApplication *)application

    {

        [self backgroundTask];

    }

     

    备注:IOS7测试 只可以申请180S时间来执行后台操作,而且有个奇怪的问题,就是执行完后App有时候会挂起,下次在启动的时候直接进入主页面,不会弹出Launch image页面。然后我试着把endBackgroundTask的内容注释后,下次启动就会弹出Launch image页面。按道理来说一般10分钟后系统会Kill掉App,10分钟后启动就会启动Launch image页面,但是实际有时候一个小时或者更长时间重新启动都不会弹出Launch image页面。如果有高手看到可以帮忙解答一下。。我目前的做法是只申请不结束。也就是不执行endBackgroundTask。

  • 相关阅读:
    使用Jenkins进行android项目的自动构建(3)
    使用Jenkins进行android项目的自动构建(2)
    使用Jenkins进行android项目的自动构建(1)
    testlink 从1.8.5 升级到 1.9.8
    779. 第K个语法符号(Leetcode)
    687. 最长同值路径(Leetcode)(递归+树)
    116. 飞行员兄弟(Acwing)(递归+位运算)
    95. 费解的开关(Acwing)(分析+递推)
    Java遇到输入速度瓶颈时的解决办法
    92. 递归实现指数型枚举(Acwing)(递归)
  • 原文地址:https://www.cnblogs.com/joesen/p/3914052.html
Copyright © 2011-2022 走看看