2011-11-17 95 views
1

我有一類名爲myClassCalculate有以下方法如何在iOS應用程序處於後臺時調用Method?

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 

NSLog(@"Accelerometer is called"); 

} 

我正在對象

- (void)applicationDidFinishLaunching:(UIApplication *)application {  


    // Override point for customization after app launch 
     myObject = [[myClassCalculate alloc] init]; 

現在,當應用程序會在後臺去了,我想這

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 

我該怎麼辦,以便這種方法會在應用程序背景中調用

謝謝

回答

7

你不能,只有VOIP,音頻和導航應用程序被允許在後臺運行。 因此,如果您的應用不屬於其中的某個應用,它將被暫停,並且不會收到任何事件。

更多backgrounding:App States and Multitasking

聲明您的應用支持後臺任務

支持某些類型的後臺執行的必須 提前使用它們的應用程序中聲明。應用程序使用Info.plist文件聲明支持 服務。添加UIBackgroundModes關鍵 你Info.plist文件和其值設置爲包含一個或多個 以下字符串數組:

audio - 應用程序播放音頻內容給用戶,同時在後臺運行。 (此內容包括使用AirPlay播放音頻或視頻內容。)

location - 即使在後臺運行應用程序時,應用程序仍會向用戶通知其位置。

voip - 該應用程序提供了用戶使用Internet連接撥打電話的功能。

newsstand-content - 該應用程序是一個報亭應用程序,可在後臺下載和處理雜誌或報紙內容。

external-accessory - 該應用程序適用於需要定期提供更新的硬件附件。

+0

你能告訴我,該文件陳述了嗎? –

+0

你能指定它在哪裏寫嗎? –

+0

我已經接受了你的答案,並提出了上傳,並研究了文檔,但是WWDC在backgroun中聲明瞭一些關於加速計的內容? –

2

在今年的WWDC上,他們表示加速計更新可以在後臺觀察到,但我不知道該怎麼做。我認爲這將只是iOS 5。

要執行後臺任務,您需要將它們添加到UIBackgroundModes項的info.plist中。 這是什麼現在可用。

音頻 該應用程序在後臺播放可聽內容。

位置 該應用程序向用戶提供基於位置的信息,並要求使用標準位置服務(而不是重要更改位置服務)來實現此功能。

voip 該應用程序提供IP語音服務。使用此密鑰的應用程序會在系統引導後自動啓動,以便應用程序可以重新建立VoIP服務。使用此鍵的應用程序也可以播放背景音頻。

報刊亭內容 應用程序使用報亭套件框架處理最近在後臺下載的內容,以便內容在用戶需要時準備就緒。 此值在iOS 5.0及更高版本中受支持。

外部附件 應用程序與定期傳送數據的附件進行通信。

嘗試在plist中放置位置或使用[UIApplication beginBackgroundTaskWithHandler:] 此值在iOS 5.0及更高版本中受支持。

+0

你能給我一些顯示有關在後臺運行功能的蘋果文檔的網址嗎? –

+0

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3 – Randall

0

當應用程序在雲backgroound這種方法被稱爲onUserLeaveHint()

相關問題