美文网首页
iOS 后台长久运行

iOS 后台长久运行

作者: 阳明先生x | 来源:发表于2018-06-17 08:53 被阅读154次
    // 进程启动但还没完成初始化,这个方法是iOS6之后才有的
    
    - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
    // 进程启动基本完成      
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
    // 应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件
    
    - (void)applicationWillResignActive:(UIApplication *)application   
    
    // 应用程序入活动状态,这个刚好跟上面那个方法相反
    
    - (void)applicationDidBecomeActive:(UIApplication *)application    
    
    // 程序被推送到后台,如果要设置后台继续运行,则在这个函数里面设置即可
    
    - (void)applicationDidEnterBackground:(UIApplication *)application     
    
    // 程序从后台将要回到前台
    
    - (void)applicationWillEnterForeground:(UIApplication *)application   
    
    // 程序将要退出
    
    - (void)applicationWillTerminate:(UIApplication *)application
    
    

    在以前,当应用被Home键退出后,应用仅有最多5秒的时间做一些保存活清理资源的工作。但是应用可以调用UIApplication的
    beginBackgroundTaskWithExpirationHandler 方法,让应用最多有10分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存、发送统计数据等工作。

    让程序在后台长久运行的示例代码如下:

    //AppDelegate.h 文件

    @property (nonatomic , assign) UIBackgroundTaskIdentifier backgroundUpdateTask;
    

    //AppDelegate.m 文件

    - (void)applicationDidEnterBackground:(UIApplication *)application {
        [self beginBackgroundUpdateTask];
        
        //此处写需要长久运行的代码
    
        [self endBackGroundUpdateTask];
    }
    
    - (void)beginBackgroundUpdateTask{
        self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            [self endBackGroundUpdateTask];
        }];
    }
    
    - (void)endBackGroundUpdateTask{
    
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
    
        self.backgroundUpdateTask = UIBackgroundTaskInvalid;
    }
    

    相关文章

      网友评论

          本文标题:iOS 后台长久运行

          本文链接:https://www.haomeiwen.com/subject/fggieftx.html