2011-07-12 61 views
2
調用JSON web服務

我需要知道的是它可以調用從後臺json的web服務,當用戶按下home鍵,我打電話從後臺執行這種方法如何從背景iPhone

- (void) runTimer 
{ 
    [NSThread detachNewThreadSelector:@selector(updateAllVisibleElements)toTarget:self withObject:nil]; 
} 

- (void) updateAllVisibleElements { 

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    if(service == nil) 
    { 
     service = [[WebService alloc] init]; 
    } 
    [service getlocationID:currentLatitude andlongitude:currentLongitute]; 
    [pool release]; 
} 

和在調用函數[service getlocation id]之後,它不顯示任何響應或數據接收和應用程序終止,請幫助我

+1

IIRC前 - 沒有網絡通信後臺處理過程中可以使用(除了等待PUSH事件) – KevinDTimm

+0

感謝響應所以根據它不可能得到任何形式的響應從網絡服務器時,應用程序在後臺 – Kashif

+0

請參閱丹尼爾的答案如下,它可能是一個解決方法,以實現你的願望,但我猜想,因爲你提到的Web服務(S)你的任務不會太短。 – KevinDTimm

回答

0
if(service == nil) 
{ 
    service = [[WebService alloc] init]; 
} 
[service getlocationID:currentLatitude andlongitude:currentLongitute]; 

注意,你從來沒有測試service是一個很好的價值(不爲零)您撥打電話

2

如果您希望它在應用程序轉到後臺後立即發生,您可以大概使用-[UIApplication beginBackgroundTaskWithExpirationHandler:]。只要任務不需要太長時間,就應該可以工作。

+0

這種方法確實有效 - 我使用它來管理在這種情況下發生的一些異步Web服務活動。 – Roger

+0

@Roger請你給我舉個例子,因爲我以前試過它 – Kashif

+0

蘋果的文檔中有一個相當不錯的例子:http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ BackgroundExecution/BackgroundExecution.html#// apple_ref/DOC/UID/TP40007072-CH5-SW12 –