我目前使用Firebase JobDipatcher在后台执行定期任务。问题是仅在禁用电池优化并且在开发人员选项下将应用程序的待机状态手动设置为ACTIVE时,才会执行后台服务。有没有一种方法可以执行后台任务而无需手动更改所有这些操作,因为我无法要求应用程序的每个用户都这样做。并看到许多帖子,如果在应用内请求电源管理权限,则Google会暂停该应用。任何帮助将不胜感激。
答案 0 :(得分:0)
一个字答案是“不”
由于开发人员对如此小的答案仍然不满意,所以我开始讲HUGE
理论,我们开始-
策略编号-1:
AlarmManager
Reboot
上忘记了所有警报,因此将所有警报保存在应用Sqlite
数据库中,实现BOOT_COMPLETED
广播接收器,仍然可以静态定义并重新安排所有时间通过从应用数据库获取警报。 emulators
BOOT_COMPLETED
广播接收器。 useless
(根据中文ROM),因此它们不允许所有其他程序包执行后台任务.. !! foreground
中,则所有中文ROM都不会触发AlarmManager。如果将应用程序从recents
中删除,则永远不会触发策略编号-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在这种情况下会从应用商店中停用您的应用
通过编程方式打开电池并让用户自行选择电池优化,从而导航用户电池优化设置的意图
但是由于没有用户在市场上,所以谁知道呢,甚至许多开发人员都不知道,最终用户如何才能理解它。
再次,如果用户将省电模式(不同于电池优化okay)设置为ON,则绝不会考虑对电池进行优化。
那么我应该怎么做***** ...?
phone
的最近记录中“锁定”您的应用,此后,即使滑动了记录,用户也无法将其从最近记录中清除策略将起作用,并且您的作业/警报/任务将被执行,因为它发生在您的Android模拟器上或股票android上
这是开箱即用的解决方案。.
是的。在市场上,您会发现1%的android设备库存和99%的中文修改ROM
在我解决了同样的问题,最后9到10年后,这一切知识都传给了我,侯赛shhhh