Я был бы признателен за некоторые рекомендации относительно того, как бороться с ОС, убивающей долгосрочную службу.
Бизнес-сценарий:
Приложение записывает дорожку BTT, которая может длиться несколько часов. Он также может отображать дорожку на карте вместе с соответствующей статистикой.
Пользовательский интерфейс приложения позволяет пользователю запускать/останавливать запись трека и просматривать дорожку в реальном времени на карте.
После записи с начала трека пользователь может выйти из приложения и выключить экран (для экономии энергии), и останется только служба, чтобы сохранить обновление записи в базе данных (уведомление показано), пока пользователь не начнет повторную операцию и не спросит для остановки записи, что приводит к завершению обслуживания.
Вопрос:
После переменного времени, которое длится от 40 минут до полутора часов, служба записи убивается без предупреждения. Поскольку выходы BTT могут занять несколько часов, это приводит к неполному отслеживанию дорожек.
Дополнительная информация:
Служба запускается с START_STICKY
и получает PARTIAL_WAKE_LOCK
и работает в том же процессе, что и основной.
Новые местоположения приобретаются (и записываются) с заданной пользователем скоростью от 1 секунды до нескольких минут. Я знаю из документации по Android, что это ожидаемое поведение ОС для длительных служб.
Вопрос:
Каков наилучший подход к архитектуре, чтобы иметь хорошо выполненное приложение, которое могло бы удовлетворять требованиям бизнес-сценария?
Я могу подумать о нескольких вариантах (и мне не нравятся ни один из них), но мне хотелось бы, чтобы кто-то из инструкторов уже столкнулся и решил аналогичную проблему:
- Использовать широковещательный приемник (идеально подключенный к диспетчеру местоположений, если это возможно), чтобы служба работала только при новом местоположении приобретается?
- Не разрешать пользователю оставлять основное действие (что приводит к загрузке пользователя)?
- Если при необходимости приемник тревожного вещания перезапустит службу?
Спасибо всем, кто мог поделиться некоторой мудростью по этому вопросу.