Android, использующий тему для фоновых заданий - PullRequest
0 голосов
/ 18 декабря 2018

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

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

Например:

Вы можете использовать простой поток:

 new Thread(new Runnable).start()

и поработайте над этим.Используя это:

  1. В сочетании с блокировкой пробуждения устройство не будет спать, а поток будет продолжать работать.
  2. Нет ограничений режима дозирования (кроме сети, но, допустим, мы выполняем локальные операции)

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

Является ли это другим способом (не лучше, конечно, но тем не менее) для выполнения фоновой работы?Я не прав?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Если вы запускаете фоновый поток, который вы запускаете с Activity, Android не знает, что вы выполняете фоновую работу в процессе ОС, на котором размещен ваш Activity.Android может в любой момент убить процесс ОС, на котором размещена ваша Activity.Если пользователь нажимает кнопку HOME, принимает телефонный звонок, открывает уведомление и переходит в другое приложение, Android может в любой момент отключить процесс ОС.Когда пользователь вернется в ваше приложение, Android создаст новый процесс ОС и заново создаст все соответствующие действия, но ваш фоновый поток безнадежно потерян.По этой причине в Android есть службы.

Если вы запускаете Service для выполнения фоновой обработки, Service также запускает фоновые потоки, но они контролируются.Ваш Service говорит Android, что делать, если он убивает Service во время обработки Intent.Следовательно, ваш Service может быть проинформирован и при необходимости перезапустить (или продолжить) фоновую обработку.Вы также можете запустить Service в процессе ОС, отличном от процесса ОС, в котором выполняются ваши действия.Это не даст Android убить Service, если пользователь удалит ваше приложение из списка недавних задач.

В более новых SDK для Android есть и другие механизмы, которые вы можете использовать, например JobScheduler.

0 голосов
/ 18 декабря 2018

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

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

Прочтите эту часть в ссылке, котораявы связали

Сервисы имеют более высокий приоритет, чем другие фоновые процессы, и, следовательно, менее вероятно, что Android прекратит его.Хотя его можно настроить на перезапуск, когда снова будет достаточно ресурсов.Вы должны пройти через различные процессы и их приоритет / важный уровень в документации по процессам и потокам.Назначение им того же приоритета, что и на переднем плане, определенно возможно, и в этом случае необходимо активировать видимое уведомление (обычно используется для служб, воспроизводящих музыку).

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