2014-03-31 19 views
0

我想在後臺線程中運行進程。我希望該過程在60秒內完成並重新開始運行。無論應用程序在前臺還是後臺。我不知道如何實施和在哪裏實施它。我正在使用ios7。在這個過程中,我也在進行位置更新。如何在後臺線程連續運行一個進程在nos中每n秒

我閱讀了後臺任務,但沒有給出正確的流程概念。有人可以爲我提供良好的來源或鏈接嗎?

+0

你想這個後臺進程_do_什麼? – jrturton

+0

我需要比較幾件事情與我的數據庫,並在設備位置 更新在該過程中完成。 –

+0

請提供一些代碼,只是在前臺和後臺連續打印一些日誌。 –

回答

0

有通過IOS爲不同於機器人後臺進程,其使用給定的服務爲that.You可以使用連續的後臺進程計時器沒有這樣的API。也有dispatch_async,選擇在背景用於有效後臺處理。

希望這會有所幫助。

+0

好的很好,我將實現使用dispatch_async,選擇器在後臺,但當應用程序進入後臺該怎麼做。請告訴我 –

0

你可以使用這樣的背景處理,但記住蘋果已經把限制10-15分鐘來完成處理。

UIApplication* app = [UIApplication sharedApplication]; 
task = [app beginBackgroundTaskWithExpirationHandler:^{ 
     [app endBackgroundTask:task]; 
     task = UIBackgroundTaskInvalid; 
    }]; 
// Start the long-running task and return immediately. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     // Do the work associated with the task. 
     NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]); 
     if (connectedToNetwork) { 
      // do work son... 
     } 

     [app endBackgroundTask:task]; 
     task = UIBackgroundTaskInvalid; 
    }); 

你也可以檢查以下內容:

**BOOL backgroundSupported = NO; 

if ([device respondsToSelector:@selector(isMultitaskingSupported)]) 

    backgroundSupported = device.multitaskingSupported;** 
+0

這不是一個長期運行的任務。任務應在60秒內完成並重新開始。它應該在前景和背景中連續運行,即每60秒任務應該完成並重新開始。請幫助我。 –

+0

您需要首先檢查應用程序是在後臺還是在前臺,如果在後臺,然後放置上面的代碼,並且如果在前臺可以使用任何你喜歡的.Exp:定時器,選擇器線程,GCD。 –

+0

然後如何連續運行該過程不僅僅是10或15分鐘。 –