Посоветуйте реальный способ продолжить работу после закрытия приложения - PullRequest
1 голос
/ 07 июня 2019

Я записываю вывод с акселерометра.

Кто-нибудь может порекомендовать надежный способ мониторинга onSensorChanged после закрытия приложения (запуск приложения в фоновом режиме).

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

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

Другие опции?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Вам следует использовать сервис, если вы хотите работать в фоновом режиме.Но, вероятно, Android не допустит этого, потому что продолжительное прослушивание датчика на заднем плане потребляет слишком много батареи.В основном на Android P, который более требователен к расходу батареи.

0 голосов
/ 07 июня 2019

WorkManager не является правильным решением в этом случае, так как Worker имеет ограничение на выполнение в 10 минут, после чего ОС останавливает его. Но, за исключением ограничения по времени, WorkManager был разработан для другого варианта использования, поэтому использование чего-то подобного (использование некоторого хака для переназначения работника, когда вы приближаетесь к пределу в 10 минут) кажется борьбой с дизайном библиотеки. Чтобы ознакомиться с примерами использования, которые WorkManager предназначен для решения, вы можете взглянуть на этот блог: Представляем WorkManager .

Служба Foreground является опцией, но я боюсь, что постоянный мониторинг датчика может очень плохо повлиять на срок службы батареи устройства. Для получения дополнительной информации о доступных опциях, чтобы запустить код в фоновом режиме, вы можете проверить этот блог: Современное фоновое выполнение в Android

Альтернативой, в зависимости от того, что вам нужно делать с данными датчика, является использование API распознавания активности :

Вы можете сообщить API, как доставлять результаты, используя PendingIntent, который устраняет необходимость постоянно работать в фоновом режиме для целей обнаружения активности. Ваше приложение получает соответствующие Интенты от API, извлекает обнаруженные действия и решает, следует ли предпринять какое-либо действие.

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