激活电池优化时如何执行后台服务

时间:2019-04-15 06:40:18

标签: android alarmmanager android-workmanager android-background firebase-job-dispatcher

我目前使用Firebase JobDipatcher在后台执行定期任务。问题是仅在禁用电池优化并且在开发人员选项下将应用程序的待机状态手动设置为ACTIVE时,才会执行后台服务。有没有一种方法可以执行后台任务而无需手动更改所有这些操作,因为我无法要求应用程序的每个用户都这样做。并看到许多帖子,如果在应用内请求电源管理权限,则Google会暂停该应用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

一个字答案是“不”

由于开发人员对如此小的答案仍然不满意,所以我开始讲HUGE理论,我们开始-

策略编号-1:

  1. 使用AlarmManager
  2. 机器人在Reboot上忘记了所有警报,因此将所有警报保存在应用Sqlite数据库中,实现BOOT_COMPLETED广播接收器,仍然可以静态定义并重新安排所有时间通过从应用数据库获取警报。
  3. 您的所有项目和辛勤工作将按计划进行,但仅适用于emulators
  4. 因为在现实世界中,99%的设备都装有中文ROM,例如MIUI,OxygenOs,ColorOs,FunTouchOs等,它们永远不会触发您的应用BOOT_COMPLETED广播接收器。
  5. 因为他们都通过停止所有应用程序的后台服务来节省电池寿命,所以很领先。
  6. 很好的问题:-那么,为什么whatsapp,facebook,tiktok,twitter进程正常执行...?而为什么不属于我... ??
  7. 一个不错的答案:-如果在应用程序后台服务之上不允许使用中文ROM,那么没人会购买其设备。并且不要谈论您的应用程序,因为它不会以任何方式影响世界,您的应用程序是useless(根据中文ROM),因此它们不允许所有其他程序包执行后台任务.. !!
  8. 如果应用程序不在foreground中,则所有中文ROM都不会触发AlarmManager。如果将应用程序从recents中删除,则永远不会触发
  9. 简而言之,Alarmmanager被贬低了。

策略编号-2:

  1. 使用您所说的FirebaseJobScedular

  2. 如果用户更新Google Play Services,则系统会忘记所有作业。.

  3. FirebaseJobScedular的开发是为了在市场上的每台设备上运行所有作业,但是由于中国ROM不允许使用自己的wishlist中的任何进程/类/作业,因此这再没有意义了。

  4. 此库现在已被Google贬值。

策略编号-3:

  1. 使用WorkManager,这是正式在FireBaseJobScedular上进行的新库。

  2. 同样,WorkManager仍在开发中,您可以使用它,但是许多中国ROM也会丢弃此库作业的情况是一样的。.

策略编号-4:

  1. 运行所有时间前台服务。

  2. BOOT_COMPLETED
  3. broadcastreceiver重新启动。

  4. 但是,即使您使用START_STICKY,许多中文ROM都用来挂起其任务,您也可以在前台看到它,但是工作会被挂起。

策略编号-5:

  1. 使用WakeLocks

  2. 但是随着android版本的变化,它在每个版本中都变为了较新的实施策略

策略编号-6:

  1. 以编程方式为您的应用关闭电池优化功能,但是Google在这种情况下会从应用商店中停用您的应用

  2. 通过编程方式打开电池并让用户自行选择电池优化,从而导航用户电池优化设置的意图

  3. 但是由于没有用户在市场上,所以谁知道呢,甚至许多开发人员都不知道,最终用户如何才能理解它。

  4. 再次,如果用户将省电模式(不同于电池优化okay)设置为ON,则绝不会考虑对电池进行优化。

  

那么我应该怎么做***** ...?

  1. 没有任何开发人员。
  2. 训练您的支持/销售团队在每个phone的最近记录中“锁定”您的应用,此后,即使滑动了记录,用户也无法将其从最近记录中清除策略将起作用,并且您的作业/警报/任务将被执行,因为它发生在您的Android模拟器上或股票android上
    1. 培训您的支持/销售团队如何对电池进行优化,使其也“不要为此应用进行优化”。
  

这是开箱即用的解决方案。.

是的。在市场上,您会发现1%的android设备库存和99%的中文修改ROM​​

  

在我解决了同样的问题,最后9到10年后,这一切知识都传给了我,侯赛shhhh