В настоящее время я использую Firebase JobDipatcher для выполнения периодической задачи в фоновом режиме. Проблема заключается в том, что фоновая служба запускается только тогда, когда оптимизация батареи отключена, а состояние ожидания приложения вручную установлено как АКТИВНОЕ в параметрах разработчика. Есть ли способ выполнить фоновую задачу, не изменяя все это вручную, потому что я не могу просить каждого пользователя приложения сделать это. И видел много сообщений о том, что Google приостановит работу приложения, если в приложении запрашиваются разрешения на управление питанием. Любая помощь приветствуется.
In one word answer is BIG NO
Поскольку разработчики остаются недовольны такими маленькими ответами, поэтому я начинаю теорию HUGE
, начнем -
СТРАТЕГИЯ №1:
AlarmManager
Reboot
, поэтому храните все будильники в базе данных приложения Sqlite
, реализуйте BOOT_COMPLETED
широковещательный приемник, который по-прежнему может определять статически и переназначать все будильники, беря из базы данных приложений.emulators
BOOT_COMPLETED
широковещательный приемник.useless
(согласно китайским ПЗУ), поэтому они запрещают все другие фоновые задачи пакетов..!!foreground
. Никогда не срабатывает, если приложение удалено из recents
СТРАТЕГИЯ №2:
Используйте FirebaseJobScedular
, как вы сказали
Если пользователь обновляет Google Play Services
, то система забывает все задания..!!
Опять же, FirebaseJobScedular
был разработан для запуска всех заданий на каждом устройстве на рынке, но, поскольку китайские ПЗУ никогда не допускают никаких процессов / классов / заданий из своих собственных wishlist
, это снова не имеет смысла.
Эта библиотека сейчас обесценена Google.
СТРАТЕГИЯ № 3:
Используйте WorkManager
, новую библиотеку, которая официально работает над FireBaseJobScedular.
Опять то же самое, WorkManager
все еще находится в разработке, вы можете его использовать, но дело в том, что многие китайские ПЗУ тоже отказываются от работы с этой библиотекой..!!
СТРАТЕГИЯ № 4:
Запуск все время службы переднего плана.
BOOT_COMPLETED
из вашего broadcastreceiver
начните это снова.
Но даже если вы используете START_STICKY
, многие китайские ПЗУ приостанавливали свои задачи, вы можете видеть его на переднем плане, но работа приостанавливается.
СТРАТЕГИЯ № 5:
Используйте WakeLocks
Но по мере изменения версии Android она менялась на более новые стратегии реализации в каждой версии.
СТРАТЕГИЯ № 6:
Программно отключите оптимизацию батареи для своего приложения, но в таком случае Google прекращает удаление вашего приложения из магазина приложений.
Google позволяет перейти к настройке параметров оптимизации батареи, открыв ее программно и позволив ему выбрать оптимизацию батареи самостоятельно.
Но поскольку на рынке нет пользователей, кто знает, поскольку даже многие разработчики еще не знают этого, как конечные пользователи могут это понять..??
Опять же, если режим энергосбережения (он отличается от режима оптимизации батареи) включен пользователем, то оптимизация батареи никогда не будет учитываться.
What the ***** should i do then ...?
phone
, после чего пользователи не смогут удалить его из последних, даже если оно будет удалено, все ваши вышеперечисленные стратегии будут работать и ваши рабочие места / будильники/задачи будут выполняться, как это происходит на вашем эмуляторе андроида или как на стоковом андроиде
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
Что вы подразумеваете под «БЛОКИРОВКОЙ вашего приложения в последних»?