Как запустить непрерывный процесс - PullRequest
0 голосов
/ 17 февраля 2011

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

В настоящее время мне очень трудно найти способ запустить этот процесс в течение 15-20 минут, которые требуются нашим испытаниям без его уничтожения. Несмотря на постоянное объявление приложений, пробование различных подходов к службам (startForeground (), START_STICKY, ..) и т. Д. Я не могу удержать ОС Android от решения приостановить или убить мой сервис / процесс.

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

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 05 марта 2011

Лучшее решение, которое я мог бы решить для моей проблемы, - это увеличить задержку отключения экрана на устройстве до 30 минут, и молиться, чтобы во время наших испытаний не нажимались кнопки.

0 голосов
/ 17 февраля 2011

Из документации У меня складывается впечатление, что если вы хотите иметь службу, которая будет убита только в ситуациях с очень низким объемом памяти, вам необходимо:

  • startForeground () (вы сделали это)
  • START_STICKY (вы тоже это попробовали) или START_REDELIVER_INTENT (перезапускает службу, если она уничтожена, но в ваших данных остаются пробелы)
  • запускает всю свою обработку в отдельном потоке
  • использовать Context.startService () для запуска службы

Единственный верный способ - использовать его как системный демон .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...