Size: a a a

Xamarin Developers (MAUI)

2021 April 20

A

Alex_R in Xamarin Developers (MAUI)
Всем привет. Нужна помощь по Андройд разработке. Пишу уже от безысходности)) Может найдется здесь бог андройда и объяснит возможно ли это вообще.

Суть вопроса в том, что бы сделать приложение, которое будет работать в фоновом режиме и не засыпать при переходе устройства в спящий режим. Я, для примера, сделал Foreground Service, который запускает таймер и каждую секунду увеличивает мой TimeSpan на 1 секунду. И вывожу тостом время запуска службы, и значение TimeSpan. Так же у меня есть  BroadcastReceiver, который перезапускает службу после перезагрузки устройства.

Проблема в том, что после выключения экрана, через 5-20 минут сервис приостанавливает свою работу. А после включения экрана продолжает работу.

Я перелапатил гугл от и до и так и не нашёл решения. Вроде как после Android O система очень тщательно следит за работой приложения и в целях экономии заряда выключает/приостанавливает висящие сервисы. В настройках я давал разные разрешения приложению, убирал контрль активности, включал автозапуск. Но ничего не помогает.

Android 9, Miui 10
Но я уверен, что есть какой то путь, что бы сделать это.
источник

a

atrant.sg in Xamarin Developers (MAUI)
источник

A

Alex_R in Xamarin Developers (MAUI)
нет(
источник

a

atrant.sg in Xamarin Developers (MAUI)
значит дело не в бобине
источник

a

atrant.sg in Xamarin Developers (MAUI)
https://t.me/android_live/638 вроде там есть материал по работе под капотом
Telegram
Android Live 🤖
​​Планируем задачи с WorkManager
#workmanager #jetpack #beginners

WorkManager — довольно важный компонент из Jetpack, который позволяет планировать задачи вне зависимости от того было ли закрыто ваше приложение или перезагружено устройство.
У него есть несколько преимуществ в сравнении с предшественниками: например, работа при определённом заряде батареи или Интернета, гибкие настройки для повторного запуска, интеграция с Coroutines и RxJava.

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

Ссылка на статью тут.

Были ли у вас проблемы с использованием WorkManager?
источник

a

atrant.sg in Xamarin Developers (MAUI)
ну и 4pda там наверняка подскажут про настройки. но если используется какое-то deprecated obsolete legacy API то никто не поможет
источник

dd

dudu dida in Xamarin Developers (MAUI)
Есть «гениальное» решение, будить приложение пустыми пушами
источник

A

Alex_R in Xamarin Developers (MAUI)
это как?
источник

A

Alex_R in Xamarin Developers (MAUI)
слать с сервака уведомление?
источник

A

Alex_R in Xamarin Developers (MAUI)
спасибо
источник

dd

dudu dida in Xamarin Developers (MAUI)
Ну можно и руками через консоль пуш сервиса😂
источник

A

Alex_R in Xamarin Developers (MAUI)
так получается, если есть WorkManager, то ForegroundService не нужен? Просто пишу метод, который делает нужную мне работу и кидаю его в WorkMAnager с настройками периодичности?
источник

a

atrant.sg in Xamarin Developers (MAUI)
я хз у меня лапки
источник

MO

Mr. Onion in Xamarin Developers (MAUI)
только учтите
источник

KA

Kirill Ashikhmin in Xamarin Developers (MAUI)
гарантированно держать приложение в фоне всегда не вмешиваясь в прошивку и не устанавливая приложение как системное (для этого всего нужен рут) не получится.  Чем меньше сервис жрёт памяти и ЦП, тем дольше живёт. Если убрать тост каждую секунду, то жить должен дольше.  
Способы продлить жизнь:
1. Вынести сервис в отдельный процесс
2. Следить за основным сервисов из дополнительного и перезапускать его,если сдох.
3. написать его на нативе (xamarin все равно чуть больше ресурсов потребляет, чем натив, небольшая экономия, но всё таки)
4. Отправлять периодически пуши, которые будут поднимать сервис, если тот спит.

Ну и самый норм вариант - поменять сценарий, что бы не требовалось постоянной работы в фоне, это не хорошо
источник

MO

Mr. Onion in Xamarin Developers (MAUI)
что периодичность у workmanager минимум 15 min
источник

A

Alex_R in Xamarin Developers (MAUI)
ого, почему? а как же будильник работает?
источник

MO

Mr. Onion in Xamarin Developers (MAUI)
а workmanager и не для будильников создан)
источник

A

Alex_R in Xamarin Developers (MAUI)
а как тогда будильник работает?
источник

MO

Mr. Onion in Xamarin Developers (MAUI)
у него спрашивайте))
источник