在iOS中应用程序处于后台时如何调用Method?

时间:2011-11-17 13:34:48

标签: iphone accelerometer runloop

我有一个类名,因为myClassCalculate具有以下方法

- (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 {

我该怎么办,以便在app background中调用此方法

谢谢

3 个答案:

答案 0 :(得分:7)

您不能,只允许VOIP,音频和导航应用在后台运行。 因此,如果您的应用程序不属于其中一个,它将被暂停,并且不会收到任何事件。

有关后台处理的更多信息:App States and Multitasking

  

声明应用程序支持的后台任务

     

必须声明对某些类型的后台执行的支持   由使用它们的应用程序推进。一个应用程序声明支持a   使用Info.plist文件进行服务。添加UIBackgroundModes键   您的Info.plist文件并将其值设置为包含一个或的数组   更多以下字符串:

     

audio - 该应用在后台播放用户的可听内容。 (此内容包括使用AirPlay播放音频或视频内容。)

     

location - 应用会让用户随时了解他们的位置,即使它在后台运行也是如此。

     

voip - 该应用为用户提供了使用互联网连接拨打电话的功能。

     

newsstand-content - 该应用是一个报亭应用,可在后台下载和处理杂志或报纸内容。

     

external-accessory - 该应用适用于需要定期提供更新的硬件配件。

答案 1 :(得分:2)

今年在WWDC上他们说可以在后台观察到加速度计的更新,但我不知道该怎么做。我认为它只是iOS 5。

要执行后台任务,您需要将它们添加到UIBackgroundModes键中的info.plist。 这是现在可用的。

音频 该应用程序在后台播放可听内容。

位置 该应用程序向用户提供基于位置的信息,并且需要使用标准位置服务(而不是重要的更改位置服务)来实现此功能。

VOIP 该应用程序提供IP语音服务。具有此密钥的应用程序在系统引导后自动启动,以便应用程序可以重新建立VoIP服务。使用此键的应用程序也可以播放背景音频。

报摊内容 该应用程序使用Newsstand Kit框架处理最近在后台下载的内容,以便在用户需要时准备好内容。 iOS 5.0及更高版本支持此值。

外部附件 该应用程序与定期传送数据的附件进行通信。

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

答案 2 :(得分:0)

当app进入后台时,此方法称为onUserLeaveHint()