iOS 后台长久运行

2018-06-17  本文已影响154人  阳明先生x
// 进程启动但还没完成初始化,这个方法是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;
}
上一篇下一篇

猜你喜欢

热点阅读