Андроид фоновый режим: Фоновый режим на Android: как с ним работать

Содержание

что это на смартфоне Android

Понятие «фоновый режим» актуально для любого смартфона, компьютера или ноутбука. Но что представляет собой этот процесс и можно ли его как-то контролировать?

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

Еще 10-20 лет назад мы не могли воспользоваться всеми преимуществами, которые предлагает сейчас современный мобильный телефон с доступом к Интернету. Благодаря этому различные действия (обмен файлами или информацией, шоппинг и пр.), требующие ранее больших усилий, становятся намного проще. Достаточно нажать пару кнопок в интерфейсе приложения – и готово.

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

Содержание

  • 1 Что такое фоновый режим
  • 2 Работа в фоне – хорошо или плохо?
  • 3 Управление фоновым режимом
    • 3. 1 Запрет фоновой активности для приложений
    • 3.2 Ограничение сетевых соединений
    • 3.3 Запрет на автозапуск [ROOT]
    • 3.4 Отключение синхронизации

Что такое фоновый режим

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

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

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

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

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

Работа в фоне – хорошо или плохо?

Как вы уже наверняка поняли, и другие сервисы (браузер, приложения социальных сетей и др.), которые отсылают вам различные уведомления, работают по такому же принципу: бодрствование 24/7. Из-за этого нагружается процессор, а также растет потребление ресурсов аккумулятора и происходит лишний расход оперативной памяти.

Да, между активным (ручное открытие приложения) и фоновым режимами («скрытая», невидимая деятельность) есть большая разница, но для слабых или уже устаревших смартфонов работа в фоне по-своему вредна, особенно если в системе установлено огромное количество программ.

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

Почему это хорошо:

  • Синхронизация данных. Используется для удаленного доступа к документам и другим файлам на любых устройствах, например, в облачных хранилищах или браузерах.
  • Резервное копирование. Некоторые сервисы используют фоновый режим, чтобы сохранять важные для своего пользователя данные. Например, WhatsApp иногда запускает этот процесс с определенной периодичностью (раз в неделю, месяц и т. д.). Благодаря этому сообщения, контакты, медиафайлы и другой контент в случае чего не будет утерян.
  • Расширенный функционал. С помощью уведомлений и статус-бара многие приложения позволяют произвести важные действия без необходимости запуска.
  • Удобно. Любые напоминания и полезные новостные оповещения для программ, которым разрешен фоновый режим, будут приходить вовремя.

Почему это плохо:

  • Негативное влияние на систему. Работа в фоне плохо сказывается на времени автономной работы (смартфон быстрее разряжается) и быстродействии. В одних случаях это влияние абсолютно незаметно, в других – одна из основных проблем появления «лагов».

Управление фоновым режимом

Кроме сервисов, чья фоновая активность еще может быть как-то обоснована и является полезной для пользователя, есть и бесполезные программы, которые также любят заниматься своими делами в «скрытом» порядке. Благо современные версии Android уже оснащены необходимыми инструментами, способными противостоять этому.

Запрет фоновой активности для приложений

Шаг 1. Откройте настройки на своем смартфоне.

Шаг 2. Перейдите на вкладку «Приложения и уведомления» и нажмите на кнопку «Показать все приложения».

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

Шаг 4. Нажмите клавишу «Дополнительно» и откройте раздел «Батарея».

Шаг 5. Выберите строку «Работа в фоновом режиме» и нажмите на нее, после чего подтвердите действие кнопкой «Ограничить».

Для наглядности, на скриншотах выше можно заметить, что некоторые сервисы могут в значительной степени работать именно в фоне. У Telegram, к примеру, активный режим составил 1 час 48 минут, тогда как фоновый – целых 2 часа 30 минут.

Ограничение сетевых соединений

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

Шаг 1. Откройте меню настроек.

Шаг 2. Выберите пункт «Приложения и уведомления».

Шаг 3. Разверните дополнительные функции, нажав на «Дополнительно», после чего перейдите на вкладку «Специальный доступ».

Шаг 4. Из списка функций выберите «Неограниченный доступ к данным».

Шаг 5. Переведите ползунки в неактивное положение для всех программ, кроме «Сервисы Google Play», «Carrier Services» и других системных сервисов.

Запрет на автозапуск [ROOT]

Обладателям смартфонов под управлением Android с полученным корневым доступом (root-правами) есть более эффективный и многофункциональный способ борьбы с фоновым режимом. Существует множество полезных в этом плане утилит, а одной из них является Autostarts.

Autostarts

Developer: Project Maple Ltd

Price: 139,00 ₽

После запуска программа постарается получить доступ к учетной записи суперпользователя.

На экране появится список так называемых событий, которые провоцируют запуск того или иного приложения. Например, событие «Карта извлечена» означает действие, при котором мы вынимаем карту памяти из устройства. Оно может ассоциироваться с плеером VLC, который в этот момент запустится, чтобы обновить медиатеку (исключить из списка доступных песен те, что хранились на SD Card).

У каждого события можно посмотреть то, какие программы зависимы от него и запускаются, если оно наступает. В свою очередь к действию «Напоминание о событиях» могут быть привязаны сервисы Google Keep, Any.Do и прочие, которые «просыпаются», когда им нужно оповестить пользователя о запланированном задании или встрече.

Кстати, если попытаться установить ее на устройство без root-прав, запретить работу в фоне даже сторонним приложениям будет невозможно, а Autostarts выведет всплывающее сообщение об ошибке. Из прочих системных требований есть только одно: Android версии 5.0 и выше.

Отключение синхронизации

И последнее, что можно сделать, чтобы полностью защитить свой смартфон от фоновых процессов (по крайней мере настолько, насколько это возможно на базовых системах без root-доступа) – отключить автоматическую синхронизацию.

О том, как это сделать, мы подробно рассказывали в другой нашей статье, которая доступна по этой ссылке.

как включить и закрыть, настройка

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

СОДЕРЖАНИЕ СТАТЬИ:

Что такое фоновый режим

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

Фоновый режим очень важно для стабильного функционирования смартфона. Допустим, на вашем устройстве установлен мессенджер WhatsApp. Если бы приложение не работало в фоне, то вы бы получали сообщения или смогли принимать звонки только после запуска программы. Разумеется, такой вариант работы лишает WhatsApp львиной доли функционала, и только фоновый режим позволяет оценить его полностью.

Чем фоновые процессы отличаются от активных

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

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

Важно. После выхода приложения продолжают функционировать, если на смартфоне есть достаточное количество оперативной памяти. Чтобы закрыть его окончательно, нужно выгрузить соответствующий процесс из ОЗУ.

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

Как контролировать эти процессы

Владелец Андроид-смартфона получает возможность контролирования фоновых процессов. Он может их отключить или, напротив, активировать, чтобы важное приложение работало в фоне.

Зачем это нужно делать

Несмотря на то, что фоновый режим работы считается более оптимальным с точки зрения автономности, он все равно негативным образом сказывается на автономности устройства. Если включить «фон» для всех программ сразу, то смартфон продержится не более 6-10 часов даже в том случае, если вы ни разу не тапните по экрану.

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

Запрет фоновой активности

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

  • Откройте настройки смартфона.

  • Перейдите в раздел «Приложения и уведомления».
  • Выберите нужную программу.

  • Во вкладке «Батарея» запретите приложению работу в фоне.

Приведенный выше алгоритм актуален для смартфонов Samsung. Если вы являетесь владельцем устройства другого производителя, то план действий может отличаться. В частности, на многих телефонах отсутствует вкладка «Батарея» на странице приложения, но есть подпункт «Разрешения», где можно запретить приложению работу в фоне.

Принудительное закрытие процессов

Еще один способ остановить фоновые процессы – остановить их. Как и в случае с предыдущим способом, выполнить операцию можно через настройки смартфона. Инструкция выглядит следующим образом:

  • Откройте настройки устройства.

  • Перейдите в раздел «Приложения».
  • Выберите интересующую программу.

  • Нажмите кнопку «Остановить».

Аналогичным образом нужно поступить со всеми приложениями, для которых вы планируете ограничить работу в фоне. Если вы не хотите тратить время на закрытие каждой программы по отдельности, то просто выгрузите все процессы из оперативной памяти. Для этого откройте список запущенных приложений свайпом от нижней части экрана к середине или нажатием наэкранной кнопки в виде квадрата, а затем тапните по иконке в виде крестика.

На заметку. Закрытие процессов данным способом является не самым оптимальным, так как после повторного запуска приложения и последующего выхода из него, прога продолжить работать в фоне.

Ограничение сетевой активности

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

  • Запустите настройки смартфона.

  • Перейдите в раздел «Приложения», а затем – «Специальный доступ».

  • Откройте вкладку «Неограниченный доступ к данным».

  • Переведите ползунки в неактивное положение.

Указанная выше инструкция актуальна для смартфонов Samsung. Если вы, к примеру, являетесь владельцем устройства Xiaomi или другого производителя, то ограничение сетевой активности придется выполнять для каждой программы по отдельности:

  • Откройте настройки телефона.

  • Перейдите в раздел «Приложения», а затем – «Все приложения».

  • Выберите нужную программу.
  • Откройте вкладку «Сетевые подключения».

  • Снимите все галочки.

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

Очистка автозагрузки

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

  • Откройте настройки смартфона.

  • Перейдите в раздел «Приложения».
  • Выберите интересующую программу.

  • Передвиньте ползунок, расположенный напротив пункта «Автозапуск», в неактивное положение.

Так выглядит инструкция для смартфонов компании Xiaomi. На других устройствах названия пунктов меню могут быть иными, а порой опция автозапуска и вовсе не предусматривается. Тогда для отключения автозагрузки придется использовать сторонний софт вроде приложения Autostarts, доступного для скачивания через магазин Google Play Маркет.

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

Деактивация синхронизации

Наконец, в качестве еще одного способа запрета на фоновую активность стоит рассмотреть отключение синхронизации. Соответствующий переключатель должен находиться в Центре управления (шторке уведомлений) вашего телефона. Если такой пункт отсутствует, то сделайте следующее:

  • Откройте настройки гаджета.

  • Перейдите в раздел «Синхронизация» (чтобы его найти, нужно воспользоваться поисковой строкой).
  • Отключите опцию «Автосинхронизация данных».

Выполнив указанные выше действия, вы запретите синхронизацию для всех приложений. Следовательно, они будут работать только после принудительного запуска со стороны пользователя.

Возможные проблемы

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

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

Вам помогло? Поделитесь с друзьями — помогите и нам!

Твитнуть

Поделиться

Поделиться

Отправить

Класснуть

Линкануть

Вотсапнуть

Запинить

Читайте нас в Яндекс Дзен

Наш Youtube-канал

Канал Telegram

Поисковая система вакансий

Adblock
detector

Фоновая оптимизация | Разработчики Android

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

Важно: Наилучший подход к выполнению работы в фоновом режиме во время поддержание производительности и работоспособности системы заключается в планировании задач с помощью WorkManager.

Ограничения, инициированные пользователем

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

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

  1. Чрезмерные блокировки пробуждения : 1 частичная блокировка пробуждения удерживается в течение часа, когда экран выкл
  2. Чрезмерные фоновые службы : Если приложение нацелено на уровни API ниже 26 и имеет избыточные фоновые службы

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

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

Ограничения на получение широковещательных сообщений о сетевой активности

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

Примечание: A
BroadcastReceiver
зарегистрирован в [ Context.registerReceiver ][4] продолжает получать эти широковещательные приложение работает.

Планирование работы на неограниченных соединениях

При построении WorkRequest добавьте NetworkType.UNMETERED Ограничение .

 веселое расписаниеРабота(контекст: Контекст) {
    val workManager = WorkManager.getInstance(контекст)
    val workRequest = OneTimeWorkRequestBuilder()
       .setConstraints(
           Ограничения.Builder()
               .setRequiredNetworkType(NetworkType.UNMETERED)
               .строить()
           )
       .строить()
    workManager.enqueue(workRequest)
}
 

Когда условия для вашей работы соблюдены, ваше приложение получает обратный вызов для запуска метод

doWork() в указанном классе Worker .

Мониторинг сетевого подключения во время работы приложения

Работающие приложения могут по-прежнему прослушивать CONNECTIVITY_CHANGE с зарегистрирован BroadcastReceiver . Однако API ConnectivityManager предоставляет более надежный метод для запроса обратного вызова только в том случае, если указанная сеть условия соблюдены.

Объекты NetworkRequest определяют параметры сетевого обратного вызова в термины NetworkCapabilities . Вы создаете

объектов NetworkRequest с классом NetworkRequest.Builder . [ registerNetworkCallback ][10] затем передает объект NetworkRequest в систему. Когда сеть условия выполняются, приложение получает обратный вызов для выполнения метод onAvailable() определен в его ConnectivityManager.NetworkCallback класс.

Приложение продолжает получать обратные вызовы до тех пор, пока приложение не выйдет или не вызовет отменить регистрацию NetworkCallback().

Ограничения на получение изображений и видеотрансляций

Приложения не могут отправлять или получать ACTION_NEW_PICTURE или ACTION_NEW_VIDEO трансляций. Это ограничение помогает облегчить влияет на производительность и взаимодействие с пользователем, когда несколько приложений должны просыпаться по порядку для обработки нового изображения или видео.

Определить, какие органы управления контентом инициировали работу

WorkerParameters позволяет вашему приложению получать полезную информацию о том, что органы управления контентом и URI инициировали работу:

List getTriggeredContentUris()

Возвращает список URI, которые инициировали работу. Это пусто, если либо никакие URI не инициировали работу (например, работа была запущена из-за крайний срок или какая-либо другая причина), или количество измененных URI больше, чем 50.

List getTriggeredContentAuthorities()

Возвращает строковый список органов управления контентом, которые инициировали работу. Если возвращенный список не пуст, используйте getTriggeredContentUris() для получения сведения о том, какие URI изменились.

Следующий пример кода переопределяет метод CoroutineWorker.doWork() и записывает полномочия по содержимому и URI, инициировавшие задание:

 class MyWorker(
    appContext: Контекст,
    параметры: Рабочие параметры
): CoroutineWorker(appContext, параметры)
    переопределить приостановку удовольствия doWork(): Результат {
        StringBuilder (). применить {
            append("Содержимое мультимедиа изменилось:\n")
            params. triggeredContentAuthorities
                .takeIf { it.isNotEmpty() }
                ?.let { власти ->
                    append("Полномочия: ${authorities.joinToString(", ")}\n")
                    добавить (params.triggeredContentUris.joinToString("\n"))
                } ?: добавить("(Нет содержимого)")
            Log.i(TAG, toString())
        }
        вернуть результат.успех()
    }
}
 

Дальнейшая оптимизация приложения

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

Некоторые дополнительные команды Android Debug Bridge (ADB) могут помочь вам протестировать приложение поведение с отключенными фоновыми процессами:

  • Для имитации условий, при которых скрытая широковещательная рассылка и фоновые службы недоступен, введите следующую команду:

    $ adb shell cmd appops set RUN_IN_BACKGROUND игнорировать

  • Чтобы повторно включить неявные широковещательные рассылки и фоновые службы, введите следующее команда:

    $ adb shell cmd appops set RUN_IN_BACKGROUND разрешить

[4]: ​​/reference/android/content/Context. html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)

[10]: /reference/android/net/ConnectivityManager.html#registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback)

Напишите приложение для Android, чтобы оно работало в фоновом режиме как служба | by Victor Leung

В некоторых случаях использования вы можете столкнуться с проблемой, когда ваши пользователи переводят ваше приложение в фоновый режим или в состояние блокировки экрана, после чего функциональность вашего приложения теряется через несколько минут. Это не было бы хорошим пользовательским интерфейсом, который может привести к отключению устройства Bluetooth от вашего приложения или прерыванию синхронизации данных с сервером в фоновом режиме. Затем пользователи будут жаловаться на подключение и стабильность вашего приложения.

Чтобы решить эту проблему, во-первых, вам нужно немного понять жизненный цикл приложения Android. Когда ваш пользователь отвлечется и откроет приложение Facebook на переднем плане вместо вашего приложения, активность вашего приложения будет завершена, и будет запущен onDestroy() . Это хорошо для системы Android, так как освободит неиспользуемую память, а также улучшит управление батареей. Однако это может быть не очень хорошо для вашего приложения, так как оно было убито, а ваши состояния и функциональность потеряны.

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

 import android.app.Service 

class MyService : Service() {

override fun onBind(intent: Intent): IBinder? {
вернуть ноль
}

переопределить удовольствие onCreate() {
// переместите сюда логику службы
}

override fun onDestroy() {
// очистите логику службы здесь
}

}

Чтобы использовать эту службу, вам также необходимо определить ее в своем AndroidManifest. xml, вот пример (замените имя на имя вашего пакета услуг):

  
...

Еще одна вещь, чтобы вызвать запуск этой службы в вашей деятельности, такой как Activity onCreate, добавьте эту строку:

 startService(Intent(this, MyService::class.java)) 

Также в том месте, где вы хотите остановить службу, добавьте эту строку:

 stopService(Intent(this, BleService::class.java)) 

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

 class MyService : Service() { 

@RequiresApi(Build.VERSION_CODES.O)
переопределить fun onStartCommand(намерение: намерение?, флаги: Int, startId: Int): Int {

val channelId =
if (Build. VERSION. SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel("my_service", "My Background Service")
} else {
// Если идентификатор канала более ранней версии не используется
""
}

val уведомление: Notification = Notification.Builder(this, channelId)
.setContentTitle("title")
.setContentText("текст")
.build()
startForeground(2001, уведомление)

return START_STICKY
}

@RequiresApi(Build.VERSION_CODES.O)
private fun createNotificationChannel(channelName: String), channelName: String), : String{
val chan = NotificationChannel(channelId,
channelName, NotificationManager.IMPORTANCE_NONE)
chan.lightColor = Color.BLUE
chan.lockscreenVisibility = Notification.VISIBILITY_PRIVATE
val service = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
service.createNotificationChannel(chan)
return channelId
}

}

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *