我有一个需求,我需要在应用程序进入后台状态时创建并启动一个线程。创建的线程的功能是从本地数据库获取数据并上传到服务器,并且我不需要在UI上进行任何更新。我的问题是:当iOS应用程序进入后台状态时启动线程
- 我究竟应该在哪里创建线程 - 无论是在
applicationWillResignActive
方法或applicationDidEnterBackground
? - 这是创建线程的最佳方式 - nsthread way或GCD或Posix Way?
这个事情我已经试过
- 我已经工作在Android上,所以我知道我能做到这一点的场景,但我是新来的iOS,所以我变得有点糊涂了开始。
我刚刚尝试过使用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]; }
是创建线程的这种正确的方法,或者我需要做一些改变?如果不是,请指导我如何实现这一目标。在此先感谢
谢谢Daniel,你能解释我多一点吗?你能给我一个代码片段吗? – RockandRoll 2013-03-02 13:21:28
@SunilHavnur在调度长时间运行的任务之前,您需要从'applicationDidEnterBackground:'方法调用'beginBackgroundTaskWithExpirationHandler:'。请参阅我链接到的文章中的清单3-3。 – 2013-03-02 13:28:09
好的,谢谢..我明白了.. – RockandRoll 2013-03-02 13:30:30