`

iPhone允许在后台运行10分钟时间 这样你在后台可以做一些事情

阅读更多
UIBackgroundTaskIdentifier _bgTask;

- (void)applicationDidEnterBackground:(UIApplication *)application 

    UIDevice* device = [UIDevice currentDevice]; 
   
    BOOL backgroundSupported = NO; 
   
    if ([device respondsToSelector:@selector(isMultitaskingSupported)]) 
    {    
        backgroundSupported = device.multitaskingSupported; 
    } 
    if (backgroundSupported && _bgTask==UIBackgroundTaskInvalid && [self needBackgroundRunning]) 
    { 
        UIApplication*    app = [UIApplication sharedApplication]; 
       
        _bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
            NSLog(@"background task %d ExpirationHandler fired remaining time %d.",_bgTask, (int)app.backgroundTimeRemaining);
           
            NSLog(@"aaa");
        }];  
        // 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. 
            NSLog(@"background task %d start time %d.", _bgTask, (int)[app backgroundTimeRemaining]); 
           
            
           
            while (app.applicationState==UIApplicationStateBackground && _bgTask!=UIBackgroundTaskInvalid && [self needBackgroundRunning] && [app backgroundTimeRemaining] > 10)  
            { 
                [NSThread sleepForTimeInterval:1]; 
            NSLog(@"background task %d left left  time %d.", _bgTask, (int)[app backgroundTimeRemaining]); 
               
                [self test];
               
                //[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(test) userInfo:nil repeats:YES];
            } 
           
            NSLog(@"background task %d finished.", _bgTask);     
            [app endBackgroundTask:_bgTask]; 
            _bgTask = UIBackgroundTaskInvalid;   
           
           
        });      
    } 
   
    NSLog(@"!Enter Background"); 
   


- (void) test
{
    NSLog(@"sssssssssss");
}
分享到:
评论

相关推荐

    BackgroundFetchLogger:收集有关 iOS 通过后台提取唤醒应用程序的频率的数据

    在运行 iOS 8.1.2 的 iPhone 5 上的初步结果表明,只要设备的电池正在充电,就会频繁地执行提取(约 10-15 分钟,当使用 UIApplicationBackgroundFetchIntervalMinimum 配置时),但是当设备放电时后台提取被有效地...

    NotifFlashlight:Android Flash 通知(就像 iPhone 一样)-开源

    为了正常工作,此应用程序使用了 Android 辅助功能服务,它将始终在后台运行,但仅在触发辅助功能事件时才起作用。 特点: + 新通知闪烁。 + 控制它应该为哪些应用程序闪烁。 + 控制闪光量。 + 控制延迟(闪光之间...

    BasicUserNotification.m

    配置通过点击了通知打开应用程序后要做的事情,可以在AppDelegate中通过实现didReceiveRemoteNotification方法,就可以获取到用户点击了通知这个动作 10.远程推送过程中AppDelegate中所要响应的方法  下面的方法都...

    TY_XMPPDEMO:xmppdemo实现加添好友,发送文字,语音,图片,消息记录

    // 设置此行为YES,表示允许socket在后台运行 // 在模拟器上是不支持在后台运行的 self.xmppStream.enableBackgroundingOnSocket = YES; #endif // 设置自动断线重连 模块会监控意外断开连接并自动重连 self....

    允许您的用户使用FaceID / TouchID登录-PHP开发

    允许您的用户注册物理身份验证设备(iPhone和Macs上的FaceID或TouchID,Android上的指纹,Windows上的Hello和USB密钥)以跳过输入登录凭据的操作。 允许您的用户使用FaceID / TouchID登录允许您的用户注册物理身份...

    glimworm-beacons-manager-iphone:Glimworm信标配置应用程序

    Glimworm iBeacon配置应用程序iOS 7中的iBeacons API演示应用... 有一个配置按钮将查找Glimworm iBeacons,并允许您通过串行BLE连接设置UUID,主要,次要广告比率和范围截屏笔记###来自HiBeacons 当应用程序在后台运行

    虚拟化--docker.ctb

    Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。 Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用...

    iOS APP签名机制原理详解

    在iOS出来之前,主流的操作系统(MacOS/Windows)软件随便从哪里下载都能运行,系统安全存在隐患,盗版软件、病毒入侵、静默安装等等,苹果希望解决类似的问题,保证在iPhone iOS上的APP都是经过苹果官方允许的,...

    《Google Android SDK开发范例大全(第3版)》.pdf

    3.24 判断手机操作系统版本是否允许运行程序 72 3.25 两个不同的程序彼此调用 75 3.26 指定安装应用程序迁移至sd卡 78 3.27 手机动态layout主题随手势物换迁移 79 第4章 史上超豪华的手机控件 84 4.1...

    Google Android SDK开发范例大全(第3版)part2

     3.24 判断手机操作系统版本是否允许运行程序  3.25 两个不同的程序彼此调用  3.26 指定安装应用程序迁移至SD卡  3.27 手机动态Layout主题随手势物换迁移  第4章 史上超豪华的手机控件  4.1 EditText与...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    除在保密期内的保密论文和在技术保护期限内的论文外,允许论文被查阅和借阅,可以公布(包括以电子信息形式刊登)论文的全部内容或中、英文摘要等部分内容。论文的公布(包括以电子信息形式刊登)授权东南大学研究生...

    Google Android SDK开发范例大全(第3版) 1/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 4/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 3/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 5/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    ■增加:数据表自由导出为Excel(扩展--数据导出为Excel),自由导出您的任何意表单数据,对于站长业说可以更好的管理自主数据。 ■建站:版块表单功能,提交的表单后台存储 ■建站:模板增加预览功能(PC,iPad,iPhone) ...

Global site tag (gtag.js) - Google Analytics