Frage

In meiner app Ich bin mit CLLocationManager und AdWhirl. Ich habe keine spezifische Entwicklung in Bezug auf Hintergrundmodus gemacht. Ich will nicht meine App arbeiten kann, wenn es im Hintergrund ist, das heißt, wenn der Benutzer die Taste „Home-Taste“, GPS-Position nicht aktualisiert werden soll

Gestern Abend drückte ich „Home-Taste“, und an diesem Morgen das iPhone war die Batterie heraus. Es ist ein iPhone 4 mit iOS 4.1, nicht jailbreaked, und es gibt keinen Hintergrund app ausgeführt wird.

Die Batterie war etwa 35% gestern Abend, und 0% heute Morgen (iPhone war Shutdown).

Ich habe in meinen Delegierten setze Haltepunkt, der jedes Mal, GPS-Position aufgerufen wird, aktualisiert. Wenn App im Hintergrund-Modus befindet, wird Delegat nicht genannt. Also ich denke GPS ist wirklich im Hintergrundmodus deaktiviert. Ok

An diesem Morgen, ich bin nach Batterieverbrauch: Es geht um 1% je 15 min fallen. Ich denke, es ist ein bisschen zu viel.

kann ich tun, etwas Bestimmtes, wenn die Anwendung den Hintergrundmodus geht? Glauben Sie, dass dieser 1% Rückgang ist normal?

War es hilfreich?

Lösung

Ja, Internetzugang und GPS sind zwei große Abflüsse auf Batterie. Ich weiß gar nicht, was man mit normalen bedeuten, da keine anderen Anwendungen, die Sie ausführen abgeschlossen haben, dass in der Tat ist das, was passiert :) Angenommen, Sie mit NO getestet haben apps laufen und nicht mehr als 1% hat pro 15 Minuten ...

Für AdWhirl, es ist nicht bekannt, ob es bereits stoppt den Zugriff auf das Internet, wenn die App in den Hintergrund geht, aber Sie können dies AppDelegate hinzuzufügen:

- (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 und adView der Location-Manager-Objekt sind und die adWhirlView, erklärt sowohl im App Delegieren. Ich habe festgestellt, es nützlicher alle Lage über Methoden, die ich in der App Delegierter machen die Verwaltung zu tun.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top