【问题标题】:Background services closed in aggressive doze mode and normal doze mode in 7.0后台服务在 7.0 中以积极打盹模式和正常打盹模式关闭
【发布时间】:2017-01-18 05:37:12
【问题描述】:

我有一个后台服务以某种方式被杀死,每个设备都进入打盹模式。我试图让它变得 STICKY,设置一个警报来启动服务,如果它从任务中删除或被杀死,甚至使用 setAndAllowWhileIdle() 来触发启动服务的意图都是徒劳的。任何人都可以帮忙吗?

【问题讨论】:

  • 使用专门为此设计的 JobScheduler
  • @AJay 我实现了它,但它真的很慢。该任务现在比后台服务需要更长的时间来执行
  • 因为打盹模式。
  • @AJay 也发生在棒棒糖中。而且我在正在运行的服务中的任何地方都看不到该服务

标签: android


【解决方案1】:

我想出的可能解决方案 -

  • 要求用户允许您的应用忽略电池优化。 这是代码 sn-p -
    @TargetApi(23)
    void ignoreBatteryOptimizations() {

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return;
        }


        try {
            Intent intent = new Intent();
            String packageName = ctx.getPackageName();
            PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE);
            if (!pm.isIgnoringBatteryOptimizations(packageName)) {
              //Do something
            }

        } catch (Exception ex) {
            Log.wtf("IGNORE:BATTERY", ex);
        }


    }
  • 使用上述修复程序启动前台服务,以确保 99% 的正常运行时间。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 2017-08-06
    • 2017-02-16
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2018-10-30
    相关资源
    最近更新 更多