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;
}