Frage

Ich habe mich gefragt, ob jemand mir zeigen könnte (oder fügen Sie ihn in) einen Code mit dem Ausschalten Core-Location Updates beschäftigen Energie zu sparen.

Soweit ich es verstehe, sollten Sie Core-Location Updates unterbrochen werden, sobald Sie eine Lesung mit der gewünschten Genauigkeit erhalten. Wenn Sie nicht über eine gute Genauigkeit Lesung nach einer bestimmten Zeit erhalten, sollten Sie auch Updates stoppen (vermutlich mit Hilfe eines Timers). Jedes Mal, wenn Updates stoppen, sollten Sie einen Timer ausgelöst (etwa 60 Sekunden) Core-Standort neu zu starten und einen neuen Messwert erhalten.

Gibt es Apple-Code, der tut das alles? Die LocateMe, TaggedLocations und Standorte Beispielcode nicht scheinen, um es zu tun.

War es hilfreich?

Lösung

Das LocateMe Beispiel hat den Code, den Sie benötigen. Sie brauchen nur einen zweiten Selektor zum Feuer zu erstellen. LocateMe ruft die folgende Methode es das Setup ...

    [self performSelector:@selector(stopUpdatingLocation:) withObject:@"Timed Out" afterDelay:[[setupInfo objectForKey:kSetupInfoKeyTimeout] doubleValue]];

Er sagt, dass nach einer gewissen Zeit (kSetupInfoKeyTimeout) finden Sie in der stopUpdatingLocation Methode, um die das Argument von NSString = „Timed Out“ rufen. Im Innern des stopUpdatingLocation Verfahrens wird das [locationManager stopUpdatingLocation] genannt Corelocation zu Ende zu erzählen.

Also, alles, was Sie tun müssen, ist eine andere Wahl hinzufügen wie diese ...

[self performSelector:@selector(timeToRestartCoreLocation) afterDelay: 60];

innerhalb der stopUpdatingLocation Methode, die die timeToRestartCoreLocation Methode nach 60 Sekunden nennen. Dann in Ihrer timeToRestartCoreLocation Methode Anruf [locationManager startUpdatingLocation] kick off Corelocation wieder.

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