我目前使用 Firebase JobDipatcher 在后台执行定期任务。问题是后台服务仅在禁用电池优化并在开发人员选项下手动将应用程序的待机状态设置为活动时执行。有没有办法在不手动更改所有这些的情况下完成后台任务,因为我无法要求应用程序的每个用户都这样做。并看到许多帖子说,如果在应用程序内请求电源管理权限,谷歌将暂停该应用程序。任何帮助将不胜感激。
一言以蔽之,答案是大不
由于开发人员仍然对这种小答案不满意,所以我开始HUGE
理论,我们开始了 -
策略编号 - 1 :
- 使用
AlarmManager
- 所有警报都被 android 在
Reboot
上遗忘,因此将所有警报保存在应用程序Sqlite
数据库中,实现BOOT_COMPLETED
广播接收器,它仍然允许静态定义并通过从应用程序数据库中获取重新安排所有警报。 - 你所有的项目和辛勤工作都会按照你的计划进行,但只在
emulators
- 因为在现实世界中,99%的设备都带有中文ROM,如MIUI,OxygenOs,ColorOs,FunTouchOs等,它们永远不会触发您的应用程序
BOOT_COMPLETED
广播接收器。 - 因为它们都在通过停止所有应用程序后台服务来节省电池寿命方面处于领先地位..!!
- 好问题,:- 那为什么whatsapp,facebook,tiktok,twitter进程正常执行...??为什么不是我的...??
- 不错的答案,:- 如果中国ROM不允许上述应用程序后台服务,那么没有人会购买他们的设备..!!让我们不要谈论您的应用程序,因为它不会以任何方式影响世界,您的应用程序是
useless
的(根据中文 ROM),因此他们不允许所有其他软件包后台任务..!! - 如果应用程序不在
foreground
中,则所有中文 ROM 都不会触发警报管理器。如果应用从recents
中删除,则从不触发 - 简而言之,甜食警报管理器被剥夺了。
策略编号 - 2 :
-
按照您所说的使用
FirebaseJobScedular
-
如果用户更新
Google Play Services
,则系统会忘记所有作业..!! -
同样,
FirebaseJobScedular
被开发为在市场上的每台设备上运行所有作业,但由于中国ROM从不允许来自自己wishlist
的任何进程/类/作业,这又没有意义了。 -
这个库现在被谷歌剥夺了。
策略编号 - 3 :
-
使用
WorkManager
,这是通过FireBaseJobScedular正式进行的新库。 -
同样的事情,
WorkManager
仍在开发中,您可以使用它,但情况相同,许多中国ROM也丢弃了这个库工作..!!
策略编号 - 4 :
-
运行所有时间前台服务。
-
从您的
broadcastreceiver
BOOT_COMPLETED
重新开始它。 -
但即使你使用
START_STICKY
,许多中文ROM曾经暂停它的任务,你可以在前台看到它,但工作被暂停了。
策略编号 - 5 :
-
使用
WakeLocks
-
但随着 android 版本的变化,它在每个版本中都更改为更新的较新的实施策略
策略编号 - 6 :
-
以编程方式为您的应用停用电池优化功能,但在这种情况下,Google 会停止在应用商店中停止您的应用
-
通过以编程方式打开用户,将用户导航到电池优化设置意图,并让他自己选择电池优化,这是谷歌允许的
-
但是由于市场上没有用户,谁知道呢,因为甚至许多开发人员还不知道这一点,最终用户如何理解它..??
-
同样,如果用户打开省电模式(它与电池优化不同),那么您的电池优化永远不会被考虑。
那我该怎么办...?
- 没有作为开发人员。
- 培训您的支持/销售团队在每个
phone
的最近版本中"锁定"您的应用程序,之后,用户无法将其从最近的应用程序中滑出,即使它被刷掉,您的上述所有策略都将起作用,您的工作/警报/任务将被执行,就像它发生在您的 android 模拟器或库存 android 上一样- 培训您的支持/销售团队如何进行电池优化,以"不要针对此应用程序进行优化"。
它是如此开箱即用的解决方案..??
是的,它是。与市场上一样,您会注意到 1% 的库存安卓设备和 99% 的中国修改后的 ROM。
在我失去了过去 9 到 10 年解决同一问题之后,所有的知识都来到了我身边,Hussshhhh