2011-11-17 85 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()

相关问题