2012-03-17 4 views
0

Я пишу приложение, у которого есть служба Foreground, которая периодически использует GPS, чтобы получить местоположение пользователя. Передняя поверхность работает все время, и приложение не разряжает батарею, потому что я не использую GPS все время. Моя проблема заключается в том, что через час, когда приложение находится в фоновом режиме (более или менее), Android убивает мое приложение, пока служба переднего плана все еще работает. Кажется, что это из-за использования памяти, но я проверяю свое приложение, и он не потребляет много памяти, а не больше, чем приложение, подобное facebook, которое остается открытым всю ночь без закрытия.Android убивает мое приложение через час

любое предложение, как сохранить приложение в живых или, возможно, выяснить, почему Android убивает мое приложение?

Я также проверил и увидел, что среднее использование, если оперативная память составляет 25M. это много? может ли это быть причиной?

+0

можно увеличить приоритет приложения/процесса остановить андроид от его убийства. Кроме того, это может быть другая программа, которая берет на себя многие ресурсы, а ваша убивается, потому что она длится так долго, и она, вероятно, не была определена как услуга. – L7ColWinters

+0

Фактически это было единственное открытое приложение. таким образом, это связано с тем, что андроид внезапно убил его. есть идеи? – user958880

+0

«Я пишу приложение, у которого есть служба Foreground, которая периодически использует GPS, чтобы получить местоположение пользователя». - используйте «AlarmManager» и механизм опроса, а не вечный сервис. См. Https://github.com/commonsguy/cwac-locpoll и https://github.com/alexbirkett/cwac-locpoll для реализации этого шаблона. – CommonsWare

ответ

0

Это функция Android, которая позволяет пользователям открывать несколько приложений, но система решает, когда нужно закрыть эти приложения.

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

Эта служба может настраивать параметры для определенного приложения, а затем приложение может считывать эти изменения и создавать визуальный компонент, когда пользователь открывает его.

Чтобы узнать больше об этом, вы должны Google эти темы: -Android Услуги -Reading/Пишущие Настройки

+0

Я уже пользуюсь услугами, я написал это в своем вопросе. Спасибо, как. – user958880

+0

В этом случае ваша служба должна получить доступ и изменить SHaredPreferences. Скажите своему приложению, чтобы загрузить его содержимое на основе того, что указано в SharedPreferences. – bluejamesbond

+3

Ваш сервис не должен рассчитывать на то, что ваше приложение (Activity) должно работать, чтобы оно функционировало, оно должно работать правильно независимо от того, работает ли ваше приложение. – Kai

1

вы должны проверить низкий убийца памяти.

PF убил приложение при низкой памяти. , но PF перезапускает ваше приложение. Даже если это PF убило ваш процесс подачи заявки.

поэтому ваше приложение должно перезапустить действие службы. возможно PF-вызов только Service # onCreate() !! Применение # OnCreate() !!


[пс] Если вы хотите, чтобы создать состояние низкого киллеров памяти. Я рекомендую обратиться за помощью.

  • следующие сайт TTPS: //github.com/kyorohiro/KyoroHelloAndroid KyoroStress.apk
  • или, поиск "kyoro стресс" в Google Play

Я рекомендую использовать Сервис # strartForground метод. PF убит приоритетом является падение


и вы можете проверить здесь

Смежные вопросы