1

我有一个类名,因为 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 {

我该怎么办,以便在应用程序后台调用此方法

谢谢

4

3 回答 3

8

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

有关后台的更多信息:应用程序状态和多任务处理

声明应用支持的后台任务

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

audio— 该应用程序在后台向用户播放有声内容。(此内容包括使用 AirPlay 的流式音频或视频内容。)

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

voip— 该应用程序使用户能够使用 Internet 连接拨打电话。

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

external-accessory— 该应用程序与需要定期提供更新的硬件配件配合使用。

于 2011-11-17T13:42:12.623 回答
2

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

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

音频 应用程序在后台播放有声内容。

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

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

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

external-accessory 应用程序与定期发送数据的附件通信。

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

于 2011-11-17T13:45:17.710 回答
0

当应用程序进入后台时,会调用此方法onUserLeaveHint()

于 2013-03-11T12:41:51.463 回答