【问题标题】:Android Job Scheduler not running with screen offAndroid Job Scheduler 未在屏幕关闭的情况下运行
【发布时间】:2018-01-29 16:17:22
【问题描述】:

我正在尝试制作一个定期运行且需要连接到网络的后台作业。我正在以这种方式使用 JobScheduler 服务安排作业:

JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);

    if(js!=null) {
        if (js.getAllPendingJobs().size() == 0) {//No jobs scheduled in previous boots. Schedule one
            JobInfo.Builder b = new JobInfo.Builder(1, new ComponentName("my.app.name", MyJob.class.getName()));
            b.setPeriodic(420000);
            b.setPersisted(true);
            b.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

            js.schedule(b.build());
        }
    }

当屏幕打开时,作业可以正常运行,但一旦关闭,它就不再运行,直到再次打开(然后立即启动)。 我猜它没有运行,因为当设备空闲时没有网络连接(即使我检查了设备 Wi-Fi 和 3G 选项说在空闲时保持连接活动)。

即使设备处于空闲/屏幕关闭状态,如何让我的服务运行?

【问题讨论】:

  • 您也可能会进入打瞌睡模式——每 7 分钟都在运行,对吧?当手机打瞌睡时,你每 15 次不能跑超过一次,并且会被推迟,直到手机决定让你跑。如果长时间打瞌睡,你的跑步频率可能会更低。
  • 是的,它试图每 7 分钟运行一次。我不知道打盹模式,它可能是罪魁祸首。我会测试它更多时间,看看作业最终是否运行,但我已经测试了大约半小时,它还没有运行。
  • 不管打盹模式,作业调度程序的最小周期间隔为 15 分钟。看到这篇文章:stackoverflow.com/questions/48248172/
  • 我现在将时间更改为 15 分钟,我看到即使在屏幕关闭的情况下,计划作业现在也正在正确执行

标签: android android-jobscheduler


【解决方案1】:

如果您的设备是华为,您可以使用受保护的应用检查以下link

受保护的应用会在屏幕关闭时暂停应用。

【讨论】:

  • 很遗憾我没有使用华为设备:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2019-10-11
  • 2017-11-19
  • 2021-11-29
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多