beginBackgroundTaskWithExpirationHandler
2016-09-05 17:38
253 查看
beginBackgroundTaskWithExpirationHandler
字数234 阅读2060 评论6 喜欢1程序进入后台,我用这个方法beginBackgroundTaskWithExpirationHandler向系统申请更多时间,申请到的是180秒。正常是需在beginBackgroundTaskWithExpirationHandler中调用endBackgroundTask来告诉系统停止程序任务,系统到了时间就会停止任务。但是不在beginBackgroundTaskWithExpirationHandler中调用的话,是可以超出180秒的范围,我试过在任务完成后再去调用endBackgroundTask也没有出现问题,这个时间的上限是多少就没有考究过了。
以下是转自:http://www.jianshu.com/p/a668f1770efb
正常程序退出后,会在几秒内停止工作;
要想申请更长的时间,需要用到
beginBackgroundTaskWithExpirationHandler
endBackgroundTask
一定要成对出现
- (void)applicationDidEnterBackground:(UIApplication *)application { [self beginTask]; //在非主线程开启一个操作在更长时间内执行; 执行的动作 aa =0; _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(go:) userInfo:nil repeats:YES]; } -(void)go:(NSTimer *)tim { NSLog(@"%@==%ld ",[NSDate date],aa); aa++; if (aa==9) { [_timer invalidate]; [self endBack]; // 任务执行完毕,主动调用该方法结束任务 } } -(void)beginTask { NSLog(@"begin============="); _backIden = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"begin bgend============="); [self endBack]; // 如果在系统规定时间内任务还没有完成,在时间到之前会调用到这个方法,一般是10分钟 }]; } -(void)endBack { NSLog(@"end============="); [[UIApplication sharedApplication] endBackgroundTask:_backIden]; _backIden = UIBackgroundTaskInvalid; }
相关文章推荐
- ios 开启后台任务,beginBackgroundTaskWithExpirationHandler 使用细节问题备忘
- iOS开发之后台运行调用beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- beginBackgroundTaskWithExpirationHandler
- IOS 后台之长时间任务 beginBackgroundTaskWithExpirationHandler 申请后台十分钟 600秒
- database autocreate winrar file with window plan-task
- 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
- Error:Execution failed for task ':uikit:transformNativeLibsWithStripDebugSymbolForRelease'. > java.l
- Gradle build error, Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug
- Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; 奇怪错误
- Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决记录
- Excution failed for task ':app:transformClassWithDexForDebug'
- org.hibernate.QueryException: query must begin with SELECT or FROM: delete
- 错误:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transfo
- about backgroundTask
- tomcat 启动失败,提示 Failed to initialize end point associated with ProtocolHandler
- Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple
- Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > compileSdkVersion 'android-24' r