держать службу в фоновом режиме в Android - PullRequest
0 голосов
/ 03 июля 2018

Я занимаюсь разработкой приложения для чата в Android. и нужно, чтобы служба работала даже после выхода из приложения. Я усин вернуть START_STICKY; в onStartCommand () моего сервиса. но из-за ограниченности сервисов в Android Oreo, сервис будет уничтожен через несколько секунд при выходе из приложения. Пока что пользователи теряют уведомления о новых сообщениях. Я не могу использовать Fcm из-за локальной сети и отсутствия доступа к Интернету. И я не могу использовать ForegroundService. (из-за запроса работодателя не показывать уведомление). Когда я проверял запущенный сервис в настройках Android Mobile, есть некоторые приложения, которые их сервис не убивает, как Es File Explorer, Zapya, ... Как они поддерживают свою службу без обслуживания переднего плана. И что я должен делать . Покажите ударное изображение, некоторые сервисы приложений работают без какого-либо уведомления. service running

1 Ответ

0 голосов
/ 03 июля 2018

На основании документации :

Система различает фоновые и фоновые приложения. Приложение считается на переднем плане, если любое из следующего правда:

  • Имеет видимое действие, независимо от того, запущено оно или приостановлено.
  • Имеет службу переднего плана.
  • Другое приложение переднего плана подключается к приложению либо путем привязки к одной из его служб, либо путем использования одного из его содержимого. провайдеры.

Причина Es FileExplorer может быть (это только мое мнение) следующее:

В Es FileExplorer (довольно дерзко, когда дело доходит до использования некоторых дыр в петлях) есть несколько провайдеров контента, но один провайдер, FileProveders, который как-то позволяет подключить com.android.providers.settings к нему. Я думаю, что эта связь делает это на переднем плане. У них практически все возможные intent-filter зарегистрированы практически по всей схеме. Все, что вы пытаетесь поделиться или получить к нему доступ, может вызвать их тем или иным способом, который поддерживает его процесс в использовании (вы можете просто щелкнуть по деталям, и вы увидите LocalCService запущенного приложения).

Но для вашего приложения:

Если вы не можете использовать FCM, ForegroundService и не можете видеть пользователя, тогда единственный вариант - периодически выполнять задачу. Вы можете использовать WorkManager. Единственное ограничение - минимальная продолжительность планирования - 15 минут. См. Мой ответ для планирования работы с WorkManager и WorkManager vs Service для использования WorkManager.

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