Schaltet die Eigenschaft CLLocationManager distanceFilter alles aus, um Batterielebensdauer / Stromverbrauch zwischen der Anforderung in der erforderlichen Entfernung zu sparen. Ich denke nicht, dass es das tut, aber ich wollte nur überprüfen, dass ich immer noch stopUpdatingLocation aufrufen soll und es nicht nur laufen lassen soll.
Ich habe hier eine Antwort gefunden, die darauf hinwies, dass das Telefon seinen Abruf durchwählte (bis die gewünschte Entfernung erreicht war), wodurch Strom gespart wurde. Auf der anderen Seite scheint es, dass selbst die Überprüfung der gewünschten Distanz die Antennen benötigt, um aktiv zu sein und so wenig Strom spart.
Momentan, wenn ich eine locations details brauche, mache ich explizit startUpdatingLocation und suche nach einem geeigneten Ort, bevor ich die stopUpdatingLocation Nachricht an den CLLocationManager sende.
Es gibt nichts , das direkt dokumentiert wurde (auf der Eigenschaft distanceFilter
), um anzuzeigen, dass dies der Fall ist. Sie sollten auf jeden Fall stopUpdatingLocation
aufrufen, wenn Sie sich um die Akkulaufzeit sorgen und dem Benutzer eine anständige Erfahrung bieten. In meiner eigenen Erfahrung mit der Entwicklung von Apps habe ich nie eine Verbesserung der Akkulaufzeit gesehen, wenn ich größere Werte für die distanceFilter
verwende - vielleicht, wenn es etwas tut, sind die Gewinne einfach zu gering, um es zu bemerken.
Ich glaube, der Punkt von distanceFilter
besteht nicht darin, Energie zu sparen, sondern damit Sie die Anzahl der Rückrufe steuern können, die Sie erhalten, falls Ihre App keine konstanten Streams von Standortdaten benötigt.
Das heißt, ich vermute, dass es sich mit den Energieanforderungen beschäftigt. Sicherlich hat die zugehörige Eigenschaft distanceAccuracy
einen definitiven Einfluss auf das Power-Management - wie in den Apple-Dokumenten:
Wenn Sie die gewünschte Genauigkeit für Standortereignisse auf einen Kilometer festlegen, erhält der Standortmanager die Flexibilität, die GPS-Hardware auszuschalten und sich ausschließlich auf das WLAN oder Funkzellen zu verlassen. Dies kann zu erheblichen Energieeinsparungen führen.
Ich würde also persönlich vermuten, dass distanceFilter
und distanceAccuracy
die Macht irgendwie beeinflussen. Das Problem (für Sie, denke ich) ist, dass die messbaren Effekte von Gerät zu Gerät und wahrscheinlich von OS-Version zu OS-Version variieren. Es ist daher sehr schwierig, eine sinnvolle Quantifizierung vorzunehmen.
Ein Apple-Beispielcode besagt ausdrücklich, dass die Einstellung eines größeren Abstandsfilters nicht hilft, Energie zu sparen:
... Außerdem beeinflusst der distanceFilter die Aktivität der Hardware nicht, d. h. es wird keine Energie eingespart, indem ein größerer distanceFilter eingestellt wird, da die Hardware weiterhin Messungen erfasst. Dies wirkt sich nur darauf aus, ob diese Messungen an den Stellvertreter des Standortmanagers weitergegeben werden. Strom kann nur gespeichert werden, indem der Standortmanager ausgeschaltet wird.
Tags und Links objective-c iphone cocoa-touch