Я делаю приложение, которое должно каждый раз отслеживать местоположение пользователя. Он также может работать в фоновом режиме. Проблема в том, что я использую другие приложения несколько раз. Другое приложение может вызвать много памяти. Мое приложение иногда завершается системой. Журналов сбоев нет. Поэтому я хочу знать некоторые причины. Есть ли способ избежать закрытия моего приложения? Очень признателен за вашу помощь.
Как избежать завершения работы моего приложения, когда оно работает и отслеживает мое местоположение в фоновом режиме?
Ответы (2)
Вы не можете предотвратить прекращение работы приложения, но что вы можете сделать лучше всего, чтобы сохранить его в рабочем состоянии, так это когда оно входит в фоновый режим, освобождая столько памяти, сколько вы можете - кэшированные изображения, файлы... Также остановите все запущенные таймеры, обновления пользовательского интерфейса. и все требует времени. Следуя правилам MVC, наилучшей реализацией является создание отдельного класса (модели), который отвечает только за обновления местоположения (с CLLocationManager
внутри, и класс реализует свои методы делегирования). Таким образом, единственное, что вам нужно делать в фоновом режиме, это собирать очки местоположения, полученные CLLocationManager
, и ничего больше. Также внедрите метод -applicationWillTerminate
в себя AppDelegate
. Этот метод вызывается только тогда, когда приложение находится в фоновом режиме, и оно будет завершено (либо ОС, либо пользователем), а внутри сохраняются точки местоположения, например, в CoreData или как вы это делаете... У меня есть такой подход и до сих пор мое приложение прожило 24 часа (с зарядкой, конечно) и не было убито.
Приложение, работающее в фоновом режиме, зависит от использования памяти, времени автономной работы и т. д. Когда в фоновом режиме работает много приложений, ваше приложение может быть остановлено. Я не думаю, что вы можете постоянно запускать свое приложение в фоновом режиме.