Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在电池优化处于活动状态时执行后台服务_Android_Alarmmanager_Android Workmanager_Android Background_Firebase Job Dispatcher - Fatal编程技术网

Android 如何在电池优化处于活动状态时执行后台服务

Android 如何在电池优化处于活动状态时执行后台服务,android,alarmmanager,android-workmanager,android-background,firebase-job-dispatcher,Android,Alarmmanager,Android Workmanager,Android Background,Firebase Job Dispatcher,我目前使用Firebase JobDipatcher在后台执行定期任务。问题是后台服务只有在禁用电池优化并且在开发者选项下手动将应用程序的待机状态设置为活动时才能执行。有没有一种方法可以在不手动更改所有这些的情况下执行后台任务,因为我不能要求应用程序的每个用户都这样做。看到很多帖子说,如果在应用程序中请求电源管理权限,谷歌将暂停该应用程序。任何帮助都将不胜感激 一个词的答案是“不” 由于开发人员对如此小的答案仍然不满意,因此我开始了巨大的理论,我们开始- 战略第一: 使用AlarmManager

我目前使用Firebase JobDipatcher在后台执行定期任务。问题是后台服务只有在禁用电池优化并且在开发者选项下手动将应用程序的待机状态设置为活动时才能执行。有没有一种方法可以在不手动更改所有这些的情况下执行后台任务,因为我不能要求应用程序的每个用户都这样做。看到很多帖子说,如果在应用程序中请求电源管理权限,谷歌将暂停该应用程序。任何帮助都将不胜感激

一个词的答案是“不”

由于开发人员对如此小的答案仍然不满意,因此我开始了
巨大的
理论,我们开始-

战略第一:

  • 使用
    AlarmManager
  • android在
    重新启动时会忘记所有报警,因此请将所有报警保存在app
    Sqlite
    数据库中,实现
    BOOT\u COMPLETED
    broadcastreceiver,它仍然允许静态定义并通过从app数据库获取数据来重新安排所有报警
  • 您所有的项目和努力工作都将按照您的计划进行,但仅限于
    模拟器
  • 因为在现实世界中,99%的设备都带有中国ROM,比如MIUI、OxygenOs、ColorOs、FunTouchOs等等。。它不会触发你的应用程序
    BOOT\u完成
    broadcastreceiver
  • 因为通过停止所有应用程序的后台服务,他们都在节省电池寿命方面领先
  • 好问题,:-那为什么whatsapp、facebook、tiktok、twitter进程都能正常执行。。。??为什么不是我的
  • 回答很好,:-如果中国ROM不允许使用上述应用程序后台服务,那么没有人会购买他们的设备。。!!不要谈论你的应用程序,因为它不会以任何方式影响世界,你的应用程序是无用的(根据中国的ROM),所以他们不允许所有其他软件包后台任务
  • 如果应用程序不在前台,所有中文ROM都不会触发AlarmManager。如果从最近的
    中删除应用程序,则从不触发
  • 简言之,请将Alarmmanager视为定价过低 战略第二号:

  • 如您所述,使用FirebaseJobsDular
  • 如果用户更新了
    googleplay服务
    ,那么系统将忘记所有作业

  • 同样地,
    firebaseJobsDular
    是为了在市场上的每台设备上运行所有作业而开发的,但由于中国ROM从不允许自己的
    愿望列表
    中的任何进程/类/作业,这再次失去了意义

  • 这个图书馆现在被谷歌削价了

  • 战略第3号:

  • 使用
    WorkManager
    ,这是在FireBaseJobsDular上正式运行的新库

  • 同样的,
    WorkManager
    仍在开发中,您可以使用它,但情况是相同的,许多中国ROM也放弃了这个库的工作

  • 战略第4条:

  • 运行所有时间的前台服务

  • 从您的
    广播接收器启动\u已完成
    ,请重新启动它

  • 但是,即使你使用
    START\u STICKY
    ,许多中文ROM用来挂起它的任务,你可以在前台看到它,但works会被挂起

  • 战略第5条:

  • 使用WakeLocks

  • 但是随着安卓版本的变化,它在每个版本中都采用了更新的实现策略

  • 战略第6条:

  • 按程序为你的应用程序进行电池优化,但在这种情况下,谷歌会从应用商店停止你的应用程序

  • 谷歌允许用户通过编程打开电池优化设置,让用户自己选择电池优化设置

  • 但由于市场上没有用户,谁知道呢,甚至许多开发人员也不知道这一点,最终用户怎么能理解呢

  • 同样,如果用户打开了节能模式(与电池优化不同),则决不会考虑电池优化

  • 那我该怎么办

  • 作为开发者,什么都没有
  • 培训您的支持/销售团队将您的应用程序“锁定”在每部
    手机的最新版本中,之后,用户将无法将其从最新版本中刷走,即使它被刷走,您的上述所有策略都将起作用&您的作业/警报/任务将被执行,就像在您的android仿真器或库存android上一样
    
  • 培训您的支持/销售团队如何对电池进行优化,使其也达到“不要为此应用程序进行优化”的程度
  • 这是一个开箱即用的解决方案

    是的。正如在市场上一样,你会注意到1%的android设备和99%的中文修改ROM

    在我失去了过去9到10年解决同一个问题的机会后,我获得了所有的知识,Husshhh