我有一个类名,因为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中调用此方法
谢谢
答案 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()