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

В настоящее время я использую Firebase JobDipatcher для выполнения периодической задачи в фоновом режиме. Проблема заключается в том, что фоновая служба запускается только тогда, когда оптимизация батареи отключена, а состояние ожидания приложения вручную установлено как АКТИВНОЕ в параметрах разработчика. Есть ли способ выполнить фоновую задачу, не изменяя все это вручную, потому что я не могу просить каждого пользователя приложения сделать это. И видел много сообщений о том, что Google приостановит работу приложения, если в приложении запрашиваются разрешения на управление питанием. Любая помощь приветствуется.

3
0
2 455
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

In one word answer is BIG NO

Поскольку разработчики остаются недовольны такими маленькими ответами, поэтому я начинаю теорию HUGE, начнем -

СТРАТЕГИЯ №1:

  1. Используйте AlarmManager
  2. Все будильники забываются Android на Reboot, поэтому храните все будильники в базе данных приложения Sqlite, реализуйте BOOT_COMPLETED широковещательный приемник, который по-прежнему может определять статически и переназначать все будильники, беря из базы данных приложений.
  3. Весь ваш проект и тяжелая работа будут работать по вашему плану, но только emulators
  4. Потому что в реальном мире 99% устройств имеют китайские ПЗУ, такие как MIUI, OxygenOs, ColorOs, FunTouchOs, .. которые никогда не запускают ваши приложения BOOT_COMPLETED широковещательный приемник.
  5. Потому что все они лидируют в экономии заряда батареи, останавливая все фоновые службы приложений..!!
  6. Хороший вопрос: - Тогда почему процессы whatsapp, facebook, tiktok, twitter выполняются нормально...?? А почему не мой...??
  7. Хороший ответ: - Если китайские ПЗУ запретят фоновые службы приложений выше, никто не будет покупать их устройства .. !! И давайте не будем говорить о вашем приложении, так как оно никак не влияет на мир, ваше приложение useless (согласно китайским ПЗУ), поэтому они запрещают все другие фоновые задачи пакетов..!!
  8. Все китайские ПЗУ никогда не запускают AlarmManager, если приложение не находится в foreground. Никогда не срабатывает, если приложение удалено из recents
  9. Короче говоря, относитесь к Alarmmanager как к обесценившемуся.

СТРАТЕГИЯ №2:

  1. Используйте FirebaseJobScedular, как вы сказали

  2. Если пользователь обновляет Google Play Services, то система забывает все задания..!!

  3. Опять же, FirebaseJobScedular был разработан для запуска всех заданий на каждом устройстве на рынке, но, поскольку китайские ПЗУ никогда не допускают никаких процессов / классов / заданий из своих собственных wishlist, это снова не имеет смысла.

  4. Эта библиотека сейчас обесценена Google.

СТРАТЕГИЯ № 3:

  1. Используйте WorkManager, новую библиотеку, которая официально работает над FireBaseJobScedular.

  2. Опять то же самое, WorkManager все еще находится в разработке, вы можете его использовать, но дело в том, что многие китайские ПЗУ тоже отказываются от работы с этой библиотекой..!!

СТРАТЕГИЯ № 4:

  1. Запуск все время службы переднего плана.

  2. BOOT_COMPLETED из вашего broadcastreceiver начните это снова.

  3. Но даже если вы используете START_STICKY, многие китайские ПЗУ приостанавливали свои задачи, вы можете видеть его на переднем плане, но работа приостанавливается.

СТРАТЕГИЯ № 5:

  1. Используйте WakeLocks

  2. Но по мере изменения версии Android она менялась на более новые стратегии реализации в каждой версии.

СТРАТЕГИЯ № 6:

  1. Программно отключите оптимизацию батареи для своего приложения, но в таком случае Google прекращает удаление вашего приложения из магазина приложений.

  2. Google позволяет перейти к настройке параметров оптимизации батареи, открыв ее программно и позволив ему выбрать оптимизацию батареи самостоятельно.

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

  4. Опять же, если режим энергосбережения (он отличается от режима оптимизации батареи) включен пользователем, то оптимизация батареи никогда не будет учитываться.

What the ***** should i do then ...?

  1. Ничего, как разработчик.
  2. Научите свою команду поддержки / продаж «БЛОКИРОВАТЬ» ваше приложение в последних новостях каждого phone, после чего пользователи не смогут удалить его из последних, даже если оно будет удалено, все ваши вышеперечисленные стратегии будут работать и ваши рабочие места / будильники/задачи будут выполняться, как это происходит на вашем эмуляторе андроида или как на стоковом андроиде
    1. Обучите свою службу поддержки / отдел продаж, как сделать оптимизацию батареи, чтобы «Не оптимизировать для этого приложения»..

It is so out of the box solution..??

Да это так. Как и на рынке, вы заметите 1% стандартных устройств Android и 99% китайских модифицированных ПЗУ.

This all knowledge came to me after i lost last 9 to 10 years resolving the same problem, Hussshhhh

Что вы подразумеваете под «БЛОКИРОВКОЙ вашего приложения в последних»?

pegnose 07.12.2021 13:48

Другие вопросы по теме