我有一个要求,当应用程序进入后台状态时,我需要创建并启动一个线程。 Created Thread的功能是从本地DB获取数据并上传到服务器,我不需要在UI上进行任何更新。我的问题是:
applicationWillResignActive
方法还是applicationDidEnterBackground
中创建线程? 我尝试过的事情
我刚试过NSThread概念,但它没有用。以下是我所知的代码:
- (void)applicationWillResignActive:(UIApplication *)application {
[NSThread detachNewThreadSelector:@selector(FetchReportFromDBAndUpload) toTarget:self withObject:nil];
}
- (void)FetchReportFromDBAndUpload {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//Check for internet connection and fetch data from DB and upload to server
[pool release];
}
这是创建线程的正确方法,还是需要进行一些更改?如果没有,请指导我如何实现这一目标。提前致谢
答案 0 :(得分:1)
您必须从AppDelegate的beginBackgroundTaskWithExpirationHandler:
方法调用UIApplication
类的applicationDidEnterBackground:
方法。此方法将您的任务标记为后台任务,以便系统在应用程序进入后台状态时不会将其终止。 (请注意,与VoiceIP,播放音乐,GPS跟踪无关的后台任务仍然限制在或多或少10分钟的后台执行时间,即它们不会永远运行。)