方法一:声明
@interfaceAppDelegate()
{
NSTimer*_timer;
intaa;
__blockUIBackgroundTaskIdentifier _backIden;
}
- (void)applicationDidEnterBackground:(UIApplication*)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
//方法一:
//[self beginTask];
//
////在非主线程开启一个操作在更长时间内执行; 执行的动作
//
//aa =0;
//
//_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(go:) userInfo:nil repeats:YES];
//方法2:推荐使用
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
[self backTask];
}
- (void)backTask{
if([[UIApplication sharedApplication] backgroundTimeRemaining] <61.0) {
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
}
}
-(void)go:(NSTimer*)tim
{
XMLog(@"%@==%d ",[NSDate date],aa);
aa++;
if(aa==600) {
[_timerinvalidate];
[self endBack];// 任务执行完毕,主动调用该方法结束任务
}
}
-(void)beginTask
{
XMLog(@"后台延时begin=============");
_backIden= [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
XMLog(@"后台延时beginbgend=============");
[self endBack];// 如果在系统规定时间内任务还没有完成,在时间到之前会调用到这个方法,一般是10分钟
}];
}
-(void)endBack
{
XMLog(@"后台延时结束========(最长十分钟)=====");
[[UIApplication sharedApplication] endBackgroundTask:_backIden];
_backIden=UIBackgroundTaskInvalid;
}
iOS 延迟后台运行方法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...