如何在电池优化处于活动状态时执行后台服务
How to perform background service while battery optimization is active
我目前使用 Firebase JobDipatcher 在后台执行周期性任务。问题是后台服务只有在禁用电池优化并且应用程序的待机状态在开发者选项下手动设置为活动时才会执行。有没有办法在不手动更改所有这些的情况下执行后台任务,因为我不能要求应用程序的每个用户都这样做。并且看到很多帖子google 如果在应用程序中请求电源管理权限,将暂停应用程序。任何帮助将不胜感激。
In one word answer is BIG NO
由于开发人员对这么小的答案仍然不满意,所以我开始 HUGE
理论,我们开始 -
策略 1 :
- 使用
AlarmManager
Reboot
上的android 忘记了所有警报,因此将所有警报保留在应用Sqlite
数据库中,实现BOOT_COMPLETED
broadcastreceiver,仍然允许定义通过从应用程序数据库中获取静态和重新安排所有警报。
- 您所有的项目和辛勤工作都会按照您的计划进行,但仅限于
emulators
- 因为在现实世界中,99% 的设备都带有中文 ROM,例如 MIUI、OxygenOs、ColorOs、FunTouchOs,.. 永远不会触发您的应用程序
BOOT_COMPLETED
broadcastreceiver。
- 因为他们在节省电池寿命方面都处于领先地位,通过停止所有应用后台服务..!!
- 问得好,:- 那么为什么 whatsapp、facebook、tiktok、twitter 进程正常执行...?为什么不是我的...??
- 很好的回答,:- 如果在应用程序后台服务之上不允许使用中文 ROM,那么就没有人会购买他们的设备了..!!并且不要谈论您的应用程序,因为它不会以任何方式影响世界,您的应用程序是
useless
(根据中文 ROM),因此他们不允许所有其他包后台任务..!!
- 如果应用程序不在
foreground
中,所有中文 ROM 都不会触发 AlarmManagers。如果应用程序从 recents
中删除,则从不触发
- 简而言之,将 Alarmmanager 视为已贬值。
策略 2 :
按照你说的使用FirebaseJobScedular
如果用户更新 Google Play Services
,那么系统会忘记所有作业..!!
再次 FirebaseJobScedular
被开发为 运行 市场上每台设备上的所有作业,但由于中国 ROM 不允许任何进程 / 类 / 来自他们的作业自己wishlist
,这又说不通了。
这个图书馆现在被google降价了。
策略 3 :
使用WorkManager
,正式在FireBaseJobScedular上进行的新库。
同样的事情,WorkManager
还在开发中,你可以使用它,但情况是一样的,许多中文ROM也放弃了这个库工作..!!
策略 4 :
运行 所有时间前台服务。
BOOT_COMPLETED
从你的 broadcastreceiver
重新开始。
但是即使你用START_STICKY
,很多中文ROM习惯了暂停它的任务,你可以在前台看到它,但是工作被暂停了。
策略 5 :
使用WakeLocks
但是随着android版本的变化,在各个版本中都改为更新更新的实现策略
策略 6 :
以编程方式为您的应用关闭电池优化,但 google 在这种情况下会从应用商店停止您的应用
导航用户到电池优化设置意图,通过编程打开它并让他自己选择电池优化,google
允许
但是市场上没有用户,谁知道呢,连很多开发者都不知道,终端用户怎么理解..??
同样,如果省电模式(它与电池优化不同)由用户开启,则永远不会考虑您的电池优化。
What the ***** should i do then ...?
- 没有开发人员。
- 培训您的支持/销售团队 "LOCK" 您的应用在每
phone
的最近更新中,之后,用户无法将其从最近更新中删除,即使它已被删除,您的上述所有策略都将起作用,并且您的工作/警报/任务将被执行,就像在您的 android 模拟器上或库存 android 上发生的那样
- 培训您的支持/销售团队如何针对 "Do not optimise for this app" 进行电池优化..
It is so out of the box solution..??
是的,是的。在市场上,您会注意到 1% 的库存 android 设备和 99% 的中国修改 ROM
This all knowledge came to me after i lost last 9 to 10 years resolving the same problem, Hussshhhh
我目前使用 Firebase JobDipatcher 在后台执行周期性任务。问题是后台服务只有在禁用电池优化并且应用程序的待机状态在开发者选项下手动设置为活动时才会执行。有没有办法在不手动更改所有这些的情况下执行后台任务,因为我不能要求应用程序的每个用户都这样做。并且看到很多帖子google 如果在应用程序中请求电源管理权限,将暂停应用程序。任何帮助将不胜感激。
In one word answer is BIG NO
由于开发人员对这么小的答案仍然不满意,所以我开始 HUGE
理论,我们开始 -
策略 1 :
- 使用
AlarmManager
Reboot
上的android 忘记了所有警报,因此将所有警报保留在应用Sqlite
数据库中,实现BOOT_COMPLETED
broadcastreceiver,仍然允许定义通过从应用程序数据库中获取静态和重新安排所有警报。- 您所有的项目和辛勤工作都会按照您的计划进行,但仅限于
emulators
- 因为在现实世界中,99% 的设备都带有中文 ROM,例如 MIUI、OxygenOs、ColorOs、FunTouchOs,.. 永远不会触发您的应用程序
BOOT_COMPLETED
broadcastreceiver。 - 因为他们在节省电池寿命方面都处于领先地位,通过停止所有应用后台服务..!!
- 问得好,:- 那么为什么 whatsapp、facebook、tiktok、twitter 进程正常执行...?为什么不是我的...??
- 很好的回答,:- 如果在应用程序后台服务之上不允许使用中文 ROM,那么就没有人会购买他们的设备了..!!并且不要谈论您的应用程序,因为它不会以任何方式影响世界,您的应用程序是
useless
(根据中文 ROM),因此他们不允许所有其他包后台任务..!! - 如果应用程序不在
foreground
中,所有中文 ROM 都不会触发 AlarmManagers。如果应用程序从recents
中删除,则从不触发
- 简而言之,将 Alarmmanager 视为已贬值。
策略 2 :
按照你说的使用
FirebaseJobScedular
如果用户更新
Google Play Services
,那么系统会忘记所有作业..!!再次
FirebaseJobScedular
被开发为 运行 市场上每台设备上的所有作业,但由于中国 ROM 不允许任何进程 / 类 / 来自他们的作业自己wishlist
,这又说不通了。这个图书馆现在被google降价了。
策略 3 :
使用
WorkManager
,正式在FireBaseJobScedular上进行的新库。同样的事情,
WorkManager
还在开发中,你可以使用它,但情况是一样的,许多中文ROM也放弃了这个库工作..!!
策略 4 :
运行 所有时间前台服务。
BOOT_COMPLETED
从你的broadcastreceiver
重新开始。但是即使你用
START_STICKY
,很多中文ROM习惯了暂停它的任务,你可以在前台看到它,但是工作被暂停了。
策略 5 :
使用
WakeLocks
但是随着android版本的变化,在各个版本中都改为更新更新的实现策略
策略 6 :
以编程方式为您的应用关闭电池优化,但 google 在这种情况下会从应用商店停止您的应用
导航用户到电池优化设置意图,通过编程打开它并让他自己选择电池优化,google
允许
但是市场上没有用户,谁知道呢,连很多开发者都不知道,终端用户怎么理解..??
同样,如果省电模式(它与电池优化不同)由用户开启,则永远不会考虑您的电池优化。
What the ***** should i do then ...?
- 没有开发人员。
- 培训您的支持/销售团队 "LOCK" 您的应用在每
phone
的最近更新中,之后,用户无法将其从最近更新中删除,即使它已被删除,您的上述所有策略都将起作用,并且您的工作/警报/任务将被执行,就像在您的 android 模拟器上或库存 android 上发生的那样- 培训您的支持/销售团队如何针对 "Do not optimise for this app" 进行电池优化..
It is so out of the box solution..??
是的,是的。在市场上,您会注意到 1% 的库存 android 设备和 99% 的中国修改 ROM
This all knowledge came to me after i lost last 9 to 10 years resolving the same problem, Hussshhhh