0

在我的应用程序中,我使用的是 CLLocationManager 和 AdWhirl。我没有对后台模式进行具体开发:我不希望我的应用程序在后台运行,即当用户按下“主页按钮”时,不应更新 GPS 位置。

昨天晚上我按了“主页按钮”,今天早上 iPhone 没电了。这是一部带有 iOS 4.1 的 iPhone 4,没有越狱,也没有运行后台应用程序。

昨天晚上电池电量约为 35%,今天早上为 0%(iPhone 已关机)。

我在我的委托中设置了断点,每次更新 GPS 位置时都会调用该断点。当应用程序处于后台模式时,不会调用委托。所以我认为GPS在后台模式下真的被禁用了:好的。

今天早上,我正在关注电池消耗:每 15 分钟下降约 1%。我觉得有点过分了。

当应用程序进入后台模式时,我应该做一些特定的事情吗?你认为这1%的下降是正常的吗?

4

1 回答 1

0

是的,互联网接入和 GPS 是电池的两大消耗。我完全不知道您对正常的含义是什么,因为没有其他应用程序正在运行,您已经得出结论,这实际上就是发生的情况:) 假设您已经测试过没有运行任何应用程序并且每 15 次没有得到 1%分钟...

对于 adwhirl,当应用程序进入后台时它是否已经停止访问互联网是未知的,但您可以将其添加到您的 App Delegate:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    /*
     Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
     If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
     */
    [lm stopUpdatingLocation];
    [adView ignoreAutoRefreshTimer]
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
    /*
     Called as part of  transition from the background to the active state: here you can undo many of the changes made on entering the background.
     */
    [adView doNotIgnoreAutoRefreshTimer]
    [lm startUpdatingLocation];
}

(lm 和 adView 是 Location Manager 对象和 adWhirlView,两者都在 App Delegate 中声明。我发现通过我在 App Delegate 中创建的方法进行所有位置管理更有用。)

于 2011-01-12T14:57:37.940 回答