美文网首页
iOS 延迟后台运行方法

iOS 延迟后台运行方法

作者: 时光浅影 | 来源:发表于2018-06-22 09:53 被阅读5次

方法一:声明

@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 延迟后台运行方法

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