Вы действительно хотите получать местоположение каждые 5 секунд, когда устройство выключено?Это очень быстро разряжает батарею.Я думаю, что каждые 5-10 минут будет более подходящим.И, возможно, даже это является чрезмерным.
Если вам действительно нужны регулярные периодические обновления позиции, я бы предложил следующие два решения:
- ios: set Ti.Geolocation.trackSignificantLocationChange в true;если ваше приложение было убито ОС, оно будет перезапущено при значительных изменениях местоположения;Вы можете обнаружить эту ситуацию, используя launchOptionsLocationKey Ti.App.getArguments ()
- android: реализовать фоновый сервис (https://docs.appcelerator.com/platform/latest/#!/api/Titanium.Android.Service) для проверки местоположения
Примечание: для андроида мы обнаружили, что ОС будет периодически убивать наш сервис, и хотя она всегда планировала его перезапуск, иногда она планировала это на очень длительное время (например, 8 часов). В итоге мы использовали AlarmService (https://github.com/benbahrenburg/benCoding.AlarmManager) для периодического запуска нашего фонового кода (например, каждые 30 минут), и фоновый код сам отключится примерно через 25 минут.
Кроме того, если вы заботитесь о запуске службы после запускаустройство перезагружено, вам следует подумать об использовании BootReceiver (https://github.com/benbahrenburg/benCoding.Android.Tools/) для перезапуска AlarmService.
Очевидно, что большой упор для Бена Бахренбурга за его превосходные модули!