Как избежать завершения работы моего приложения, когда оно работает и отслеживает мое местоположение в фоновом режиме?

Я делаю приложение, которое должно каждый раз отслеживать местоположение пользователя. Он также может работать в фоновом режиме. Проблема в том, что я использую другие приложения несколько раз. Другое приложение может вызвать много памяти. Мое приложение иногда завершается системой. Журналов сбоев нет. Поэтому я хочу знать некоторые причины. Есть ли способ избежать закрытия моего приложения? Очень признателен за вашу помощь.


person TK189    schedule 14.06.2012    source источник


Ответы (2)


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

person graver    schedule 14.06.2012

Приложение, работающее в фоновом режиме, зависит от использования памяти, времени автономной работы и т. д. Когда в фоновом режиме работает много приложений, ваше приложение может быть остановлено. Я не думаю, что вы можете постоянно запускать свое приложение в фоновом режиме.

person Nuzhat Zari    schedule 14.06.2012
comment
Спасибо за быстрый ответ. Если мое приложение использует меньше памяти, уменьшит ли это вероятность того, что оно будет завершено? - person TK189; 14.06.2012
comment
И вы можете уведомлять пользователя об изменении местоположения. Перейдите по этой ссылке: stackoverflow.com/questions/3775730/ - person Nuzhat Zari; 14.06.2012