我有一個需求,我需要在應用程序進入後臺狀態時創建並啓動一個線程。創建的線程的功能是從本地數據庫獲取數據並上傳到服務器,並且我不需要在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